
Buscador rápido de gadgets ROP en C++ para binarios PE/ELF/Mach-O en las arquitecturas x86/x64/ARM/ARM64, que permite una construcción eficiente de cadenas de programación orientada a retornos.
rp++ o rp es un buscador de gadgets ROP en C++ para ejecutables PE/ELF/Mach-O y arquitecturas x86/x64/ARM/ARM64.
Para encontrar un gadget ROP debes especificar un archivo con la opción --file / -f y usar la opción --rop / -r especificando el número máximo de instrucciones en el gadget:
Puedes personalizar la dirección base del módulo con la opción --va (si pasas una base de 0, obtienes desplazamientos relativos) y también puedes usar la opción --raw para analizar volcados de código sin procesar.
A menudo, al construir cadenas ROP, puede ser necesario encontrar punteros a enteros con valores específicos. Para buscar esos, puedes usar la opción --search-int como se muestra a continuación:
Otras veces, puede ser necesario encontrar punteros a cadenas específicas. Para buscar esos, puedes usar la opción --search-hexa como se muestra a continuación:
También puedes usar la opción --va para especificar tu propia dirección base.
Puedes encontrar scripts de shell en src/build para cada plataforma compatible; a continuación se muestra el ejemplo de 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