
PE/ELF/Mach-O 바이너리에서 x86/x64/ARM/ARM64 아키텍처를 지원하는 빠른 C++ ROP gadget finder로, 효율적인 return-oriented programming 체인 구축을 가능하게 합니다.
rp++ 또는 rp는 PE/ELF/Mach-O 실행 파일 및 x86/x64/ARM/ARM64 아키텍처를 위한 C++ ROP 가젯 파인더입니다.
ROP 가젯을 찾으려면 --file / -f 옵션으로 파일을 지정하고 --rop / -r 옵션을 사용하여 가젯 내 최대 명령어 수를 지정해야 합니다:
--va 옵션으로 모듈의 기준 주소를 사용자 지정할 수 있으며(기준 0을 전달하면 상대 오프셋을 얻습니다), --raw 옵션을 사용하여 원시 코드 덤프를 분석할 수도 있습니다.
ROP 체인을 구축할 때 종종 특정 값을 가진 정수에 대한 포인터를 찾아야 할 수 있습니다. 이를 검색하려면 아래와 같이 --search-int 옵션을 사용할 수 있습니다:
다른 경우에는 특정 문자열에 대한 포인터를 찾아야 할 수 있습니다. 이를 검색하려면 아래와 같이 --search-hexa 옵션을 사용할 수 있습니다:
자체 기준 주소를 지정하려면 --va 옵션을 사용할 수도 있습니다.
지원되는 모든 플랫폼에 대한 셸 스크립트는 src/build에서 찾을 수 있습니다. 아래는 Linux 예시입니다:
src/build$ chmod u+x ./build-release.sh && ./build-release.sh
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
[...]
[16/16] Linking CXX executable rp-lin-x64