
Buscador rápido de gadgets ROP em C++ para binários PE/ELF/Mach-O nas arquiteturas x86/x64/ARM/ARM64, permitindo a construção eficiente de cadeias de programação orientada a retorno.
rp++ ou rp é um localizador de gadgets ROP em C++ para executáveis PE/ELF/Mach-O e arquiteturas x86/x64/ARM/ARM64.
Para encontrar um gadget ROP, você precisa especificar um arquivo com a opção --file / -f e usar a opção --rop / -r especificando o número máximo de instruções no gadget:
Você pode personalizar o endereço base do módulo com a opção --va (se você passar uma base de 0, obtém deslocamentos relativos) e também pode usar a opção --raw para analisar dumps de código bruto.
Frequentemente, ao construir cadeias ROP, você pode precisar encontrar ponteiros para inteiros com valores específicos. Para procurar por eles, você pode usar a opção --search-int como abaixo:
Outras vezes, você pode precisar encontrar ponteiros para strings específicas. Para procurar por eles, você pode usar a opção --search-hexa como abaixo:
Você também pode usar a opção --va para especificar seu próprio endereço base.
Você pode encontrar scripts de shell em src/build para todas as plataformas suportadas; abaixo está o exemplo do 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