
Отображает информацию о файлах в различных форматах и находит гаджеты для построения ROP-цепочек для различных архитектур (x86/x86_64, ARM/ARM64, MIPS, PowerPC, SPARC64). Для дизассемблирования Ropper использует отличный фреймворк Capstone.
Вы можете использовать Ropper для отображения информации о бинарных файлах в различных форматах и для поиска гаджетов (gadgets) для построения ROP-цепочек под разные архитектуры (x86/X86_64, ARM/ARM64, MIPS/MIPS64, PowerPC/PowerPC64, SPARC64). Для дизассемблирования Ropper использует замечательный Capstone Framework.
Установите Capstone через PyPi:
$ sudo pip install capstone
Установите filebytes через PyPi:
$ sudo pip install filebytes
Опционально (не требуется для запуска Ropper, только для поиска гаджетов):
Установите Keystone:
$ sudo pip install keystone-engine
Установите и запустите Ropper
$ python setup.py install
$ ropper
Вы также можете установить Ropper с помощью pip
$ pip install ropper
Если хотите, можете использовать Ropper без установки
$ ./Ropper.py
Если вы не хотите устанавливать filebytes, filebytes является подмодулем репозитория ropper. Это означает, что вам не нужно устанавливать filebytes и ropper.
$ git clone https://github.com/sashs/ropper.git
$ cd ropper
$ git submodule init
$ git submodule update
$ ./Ropper.py
ЭТА ФУНКЦИЯ ВСЕ ЕЩЁ В РАЗРАБОТКЕ! Ropper имеет команду семантического поиска, которая предоставляет возможность искать гаджеты.
$ ropper --file <afile> --semantic "<any constraint>"
Для использования семантического поиска необходимы следующие опциональные зависимости:
Установите pyvex
$ sudo pip install pyvex
Установите z3py
$ python scripts/mk_make.py
$ cd build
$ make
$ sudo make install
reg == reg - присвоить регистру другой
reg == number - присвоить число регистру
reg == [reg] - присвоить память регистру
reg += number/reg/[reg]
reg -= number/reg/[reg]
reg *= number/reg/[reg]
reg /= number/reg/[reg]
eax==1 !ebx - установить eax в 1 и искать гаджеты, которые не портят ebx

usage: Ropper.py [-h] [--help-examples] [-v] [--console]
[-f <file> [<file> ...]] [-r] [-a <arch>]
[--section <section>] [--string [<string>]] [--hex]
[--asm [<asm> [H|S|R] ...]] [--disasm <opcode>]
[--disassemble-address <address:length>] [-i] [-e]
[--imagebase] [-c] [-s] [-S] [--imports] [--symbols]
[--set <option>] [--unset <option>] [-I <imagebase>] [-p]
[-j <reg>] [--stack-pivot] [--inst-count <n bytes>]
[--search <regex>] [--quality <quality>] [--opcode <opcode>]
[--instructions <instructions>] [--type <type>] [--detailed]
[--all] [--cfg-only] [--chain <generator>] [-b <badbytes>]
[--nocolor] [--clear-cache] [--no-load] [--analyse <quality>]
[--semantic constraint]
[--count-of-findings <count of gadgets>] [--single]
Вы можете использовать Ropper для отображения информации о бинарных файлах в различных форматах
и для поиска гаджетов для построения ROP-цепочек под разные архитектуры
поддерживаемые типы файлов:
ELF
PE
Mach-O
Raw
поддерживаемые архитектуры:
x86 [x86]
x86_64 [x86_64]
MIPS [MIPS, MIPS64]
ARM/Thumb [ARM, ARMTHUMB]
ARM64 [ARM64]
PowerPC [PPC, PPC64]
SPARC [SPARC64]
доступные генераторы ROP-цепочек:
execve (execve[=<команда>], по умолчанию /bin/sh) [Linux x86, x86_64]
mprotect (mprotect=<адрес>:<размер>) [Linux x86, x86_64]
virtualprotect (virtualprotect=<адрес iat vp>:<размер>) [Windows x86]