Abstract
ELF, an abbreviation for Executable and Linkable Format, is the basic file format for shared libraries and executable files used in the Linux system, whereas 'Linker' copies the symbol information of static shared libraries into the symbol table in the target file generated by way of static linking. At this time, the symbol table keeps various pieces of debugging-related information including function names provided by the shared libraries, and it can be deleted to avoid debugging for security reasons by utilizing the fact that it does not directly affect the program execution. This paper proposes a method for restoring the symbol information of static shared libraries from the ELF object file in which the symbol table is deleted, and confirms that the symbol information is restored by conducting practical experiments.
ELF는 실행과 링킹 형식(Executable and Linkable Format)의 약어로서, 리눅스 시스템에서 사용하는 공유 라이브러리와 실행 파일을 위한 기본 파일 형식이다. 한편 링커는 정적 링킹을 통한 목적 파일 생성 시, 정적 공유 라이브러리의 심볼 정보를 목적 파일 내 심볼 테이블에 복사한다. 이 때, 심볼 테이블은 공유 라이브러리가 제공하는 함수 이름을 포함하여 여러 가지 디버깅 관련 정보를 포함하는데, 프로그램 실행에 직접적인 영향을 미치지 않는다는 점을 이용하여 보안상 디버깅되는 것을 방지하기 위해 삭제될 수 있다. 본 논문은 심볼 테이블이 삭제된 ELF 목적 파일에서 정적 공유 라이브러리의 심볼 정보를 복구하는 방법을 제안하고 실제로 실험을 행하여 복구된 심볼 정보를 확인한다.