
Быстрый поисковик ROP-гаджетов на C++ для PE/ELF/Mach-O бинарных файлов на архитектурах x86/x64/ARM/ARM64, обеспечивающий эффективное построение цепочек возвратно-ориентированного программирования.
rp++ или rp — это поисковик ROP-гаджетов на C++ для исполняемых файлов PE/ELF/Mach-O и архитектур x86/x64/ARM/ARM64.
Чтобы найти 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