
Schneller C++ ROP-Gadget-Finder für PE/ELF/Mach-O-Binärdateien auf x86/x64/ARM/ARM64-Architekturen, der eine effiziente Konstruktion von Return-Oriented-Programming-Ketten ermöglicht.
rp++ oder rp ist ein C++ ROP-Gadget-Finder für PE/ELF/Mach-O-ausführbare Dateien und x86/x64/ARM/ARM64-Architekturen.
Um ROP-Gadgets zu finden, müssen Sie eine Datei mit der Option --file / -f angeben und die Option --rop / -r verwenden, die die maximale Anzahl von Anweisungen im Gadget angibt:
Sie können die Basisadresse des Moduls mit der Option --va anpassen (wenn Sie eine Basis von 0 übergeben, erhalten Sie relative Offsets) und Sie können auch die Option --raw verwenden, um Roh-Code-Dumps zu analysieren.
Beim Erstellen von ROP-Ketten benötigt man häufig Zeiger auf ganze Zahlen mit bestimmten Werten. Um danach zu suchen, können Sie die Option --search-int wie unten gezeigt verwenden:
Andere Male benötigen Sie möglicherweise Zeiger auf bestimmte Zeichenfolgen. Um danach zu suchen, können Sie die Option --search-hexa wie unten gezeigt verwenden:
Sie können auch die Option --va verwenden, um Ihre eigene Basisadresse anzugeben.
Sie finden Shell-Skripte in src/build für jede unterstützte Plattform; unten ist das Linux-Beispiel:
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