
ROP 인코딩된 셸코드들을 PE 파일에 패칭하기
C (Win32)로 작성된 도구로, 모든 셸코드를 ROP로 변환하여 지정된 포터블 실행 파일(PE)에 패치합니다. 32비트 대상 PE와 x86 명령어 집합만 지원합니다.
Blackhat USA 2015에서 발표됨, "ROPInjector: Using Return Oriented Programming for Polymorphism and Antivirus Evasion" 자세한 정보:
ropinjector <감염할-파일> <셸코드-파일> <출력-파일>* [옵션]*
(*는 선택적 인수를 나타냄)
예:
ropinjector.exe firefox.exe revshell.txt
감염할-파일 : 32비트, 비패킹 PE
셸코드-파일 : PE 파일에 패치할 셸코드
출력-파일 (선택 사항) : 출력 파일의 이름. 지정하지 않으면 ROPInjector가 수행된 주입 유형을 나타내는 적절한 파일 이름을 선택합니다.
옵션 :
text 셸코드 파일을 텍스트 파일로 강제로 읽습니다. 텍스트 형식의
셸코드는 \xHH\xHH\xHH 형식이어야 합니다.
norop 셸코드를 ROP로 변환하지 않습니다.
nounroll SIB를 언롤하지 않습니다.
noinj 누락된 가젯을 주입하지 않습니다.
getpc 셸코드에서 getPC 구문을 대체하지 않습니다.
entry 셸코드가 원래 PE 코드보다 먼저 실행되도록 합니다. 이 옵션이 없으면
ROPInjector는 ExitProcess(), exit() 등의 호출을 후킹하여
셸코드가 프로세스 종료 직전에 마지막으로 실행되도록 합니다.
-d<초> 셸코드를 실행하기 전에 Sleep()할 시간(초)입니다.
이 옵션을 지정하면 "entry"도 암시적으로 사용됩니다.
ROPInjector는 마지막에 쉼표로 구분된 통계를 출력합니다. (나타나는 순서대로):
GPLv2.0, http://www.gnu.org/licenses/old-licenses/gpl-2.0.html