
강력한 정적 바이너리 재작성 도구
E9Patch - 강력한 정적 바이너리 재작성 도구
E9Patch는 x86_64 Linux ELF 바이너리를 위한 강력한 정적 바이너리 재작성 도구입니다.
E9Patch는 다음과 같은 특징을 가집니다:
정적 바이너리 재작성은 입력 바이너리(ELF 실행 파일 또는 공유 객체)를 받아 패치/수정이 적용된 출력 바이너리를 생성합니다. 패치된 바이너리는 원본을 대체하여 사용할 수 있습니다.
사전 빌드된 E9Patch 바이너리는 여기에서 다운로드할 수 있습니다:
E9Patch를 빌드하는 것은 매우 쉽습니다: build.sh 스크립트를 실행하기만 하면 됩니다.
그러면 두 가지 도구가 자동으로 빌드됩니다:
e9patch: 바이너리 재작성 백엔드e9tool: E9Patch용 선형 디스어셈블리 프론트엔드E9Patch는 E9Tool 프론트엔드를 통해 사용할 수 있습니다.
예를 들어, xterm의 모든 xor 명령어에 명령어 출력 계측을 추가하려면 다음 명령을 사용할 수 있습니다:
$ ./e9tool -M 'asm=/xor.*/' -P print xterm
이렇게 하면 수정된 버전의 xterm이 생성되어 a.out 파일에 기록됩니다.
수정된 xterm은 정상적으로 실행되지만, 실행된 각 xor 명령어의 어셈블리 문자열을 stderr로 출력합니다:
$ ./a.out
xorl %ebp, %ebp
xorl %ebx, %ebx
xorl %eax, %eax
xorl %edx, %edx
xorl %edi, %edi
...
지원되는 옵션 및 모드의 전체 목록을 보려면:
$ ./e9tool --help
E9Patch를 사용하는 다른 프로젝트는 다음과 같습니다:
libc.so의 정적 바이너리 재작성을 이용한 시스템 호출 차단.E9Patch는 다른 프로젝트에 통합 가능하도록 설계된 저수준 도구입니다. 자세한 내용은 다음 문서를 참조하십시오:
버그는 다음 위치에 보고할 수 있습니다:
현재 버전의 E9Patch는 PLDI'2020 논문에서 평가된 원래 프로토타입에 비해 크게 개선되었습니다. 구체적으로:
-O2 옵션을 전달하십시오.이 소프트웨어는 GNU Public License(GPL) 버전 3에 따라 배포됩니다.
일부 특정 파일은 MIT 라이선스로 배포됩니다(파일 서문 확인).
자세한 내용은 PLDI'2020 논문을 참조하십시오:
다음과 같이 논문을 인용해 주십시오:
@inproceedings{e9patch,
author = {Duck, Gregory J. and Gao, Xiang and Roychoudhury, Abhik},
title = {Binary rewriting without control flow recovery},
year = {2020},
publisher = {Association for Computing Machinery},
url = {https://doi.org/10.1145/3385412.3385972},
doi = {10.1145/3385412.3385972},
booktitle = {Programming Language Design and Implementation (PLDI)}
}
이 연구는 국립연구재단(NRF) 싱가포르의 국가 사이버보안 R&D(NCR) 프로그램에 따른 신뢰할 수 있는 소프트웨어 시스템 국립 우수 센터의 부분적 지원을 받았습니다.