
Affiche des informations sur les fichiers dans différents formats de fichiers et trouve des gadgets pour construire des chaînes ROP pour différentes architectures (x86/x86_64, ARM/ARM64, MIPS, PowerPC, SPARC64). Pour le désassemblage, ropper utilise l'excellent framework Capstone.
Vous pouvez utiliser ropper pour afficher des informations sur des fichiers binaires dans différents formats de fichiers et vous pouvez rechercher des gadgets pour construire des chaînes rop pour différentes architectures (x86/X86_64, ARM/ARM64, MIPS/MIPS64, PowerPC/PowerPC64, SPARC64). Pour le désassemblage, ropper utilise l'impressionnant Capstone Framework.
Installer Capstone avec PyPi :
$ sudo pip install capstone
Installer filebytes avec PyPi :
$ sudo pip install filebytes
Optionnel (pas nécessaire pour exécuter ropper, seulement pour rechercher des gadgets) :
Installer Keystone :
$ sudo pip install keystone-engine
Installer et exécuter Ropper
$ python setup.py install
$ ropper
Vous pouvez aussi installer Ropper avec pip
$ pip install ropper
Si vous le souhaitez, vous pouvez utiliser Ropper sans installation
$ ./Ropper.py
Si vous ne voulez pas installer filebytes, filebytes est un sous-module du dépôt ropper. Cela signifie que vous n'avez pas besoin d'installer filebytes et ropper.
$ git clone https://github.com/sashs/ropper.git
$ cd ropper
$ git submodule init
$ git submodule update
$ ./Ropper.py
CETTE FONCTIONNALITÉ EST ENCORE EN DÉVELOPPEMENT ! Ropper dispose d'une commande de recherche sémantique, qui offre la possibilité de rechercher des gadgets.
$ ropper --file <afile> --semantic "<any constraint>"
Les dépendances optionnelles suivantes sont nécessaires pour utiliser la recherche sémantique :
Installer pyvex
$ sudo pip install pyvex
Installer z3py
$ python scripts/mk_make.py
$ cd build
$ make
$ sudo make install
reg == reg - affecter un registre à un autre
reg == number - affecter un nombre à un registre
reg == [reg] - affecter la mémoire à un registre
reg += number/reg/[reg]
reg -= number/reg/[reg]
reg *= number/reg/[reg]
reg /= number/reg/[reg]
eax==1 !ebx - définir eax à 1 et rechercher des gadgets qui ne modifient pas 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]
Vous pouvez utiliser ropper pour afficher des informations sur des fichiers binaires dans différents formats de fichiers
et vous pouvez rechercher des gadgets pour construire des chaînes rop pour différentes architectures
types de fichiers supportés :
ELF
PE
Mach-O
Raw
architectures supportées :
x86 [x86]
x86_64 [x86_64]
MIPS [MIPS, MIPS64]
ARM/Thumb [ARM, ARMTHUMB]
ARM64 [ARM64]
PowerPC [PPC, PPC64]
SPARC [SPARC64]
générateurs de chaînes rop disponibles :
execve (execve[=<cmd>], par défaut /bin/sh) [Linux x86, x86_64]
mprotect (mprotect=<address>:<size>) [Linux x86, x86_64]
virtualprotect (virtualprotect=<address iat vp>:<size>) [Windows x86]