
빌드 후 ELF 실행 파일에 코드를 주입합니다.

drow는 ELF 실행 파일(빌드 후)에 코드를 삽입하고 진입점을 후킹하는 데 사용되는 명령줄 유틸리티입니다. 수정되지 않은 ELF 실행 파일을 입력으로 받아 런타임에 실행되는 사용자 제공 페이로드가 포함된 수정된 ELF를 내보냅니다.
Drow는 새 패치된 ELF를 생성하기 위해 다음 단계를 수행합니다:
sh_size와 프로그램 헤더의 p_memsz/p_filesz를 사용자 제공 페이로드 크기만큼 확장합니다.sh_offset과 프로그램 헤더의 p_offset을 수정합니다(페이로드와 작은 "스테이저 스텁"을 위한 공간을 확보하기 위해 섹션과 세그먼트를 아래로 이동).e_shoff, e_phoff 등)을 수정합니다.e_entry(ELF 진입점 오프셋)를 수정하여 삽입된 코드를 가리키도록 합니다.사용자 제공 페이로드를 삽입하는 것 외에도, drow는 페이로드 시작 부분에 추가되는 작은 코드 스텁을 삽입합니다. 이 스텁은 페이로드를 호출하도록 설계되었습니다. 페이로드가 호출자로 반환되도록 작성된 경우, 페이로드가 반환된 후 스테이저는 _start로 테일콜하여 프로그램이 의도한 대로 실행되도록 복원합니다.
gcc와 scons를 설치하세요. 그런 다음 디렉토리 루트에서 scons를 실행하세요.
drow를 빌드하는 것 외에도, 이 프로젝트는 단순히 stdout에 출력하는 rappers_delight.bin이라는 Linux x86-64 페이로드도 빌드합니다. 이는 테스트에 사용할 수 있습니다. 현재 drow는 x86-64를 대상으로 하는 ELF64 파일에서만 작동합니다.
이 도메인에서 많은 오픈 소스 작업이 이루어졌습니다. 다음 프로젝트와 관련 문서도 확인해 보시기 바랍니다: