
PE/ELF/Mach-Oバイナリ向けの高速C++ ROPガジェットファインダー。x86/x64/ARM/ARM64アーキテクチャに対応し、効率的なリターン指向プログラミングチェーン構築を可能にします。
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