Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Ropper — Visualizza informazioni sui file in diversi formati e trova gadget per costruire catene ROP per diverse architetture (x86/x86_64, ARM/ARM64, MIPS, PowerPC, SPARC64). Per il disassemblaggio, ropper utilizza l'eccezionale framework Capstone. | Kitploit
Strumenti/GitHubGitHub/sashs/ropper
Generazione di PayloadExploitReverse EngineeringCTFAnalisi di BinariBinary ExploitationTop in Analisi di Binari n.19Top in Binary Exploitation n.6Top in CTF n.9Top in Reverse Engineering n.17
2.1k2234618 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
GitHubsashs/ropper

Ropper

Visualizza informazioni sui file in diversi formati e trova gadget per costruire catene ROP per diverse architetture (x86/x86_64, ARM/ARM64, MIPS, PowerPC, SPARC64). Per il disassemblaggio, ropper utilizza l'eccezionale framework Capstone.

Vedi RepositorySito web
Condividi

Ropper

Build Status

Puoi usare Ropper per visualizzare informazioni su file binari in diversi formati e puoi cercare gadget per costruire catene ROP per diverse architetture (x86/X86_64, ARM/ARM64, MIPS/MIPS64, PowerPC/PowerPC64, SPARC64). Per il disassemblaggio, Ropper utilizza il fantastico Capstone Framework.

Installazione

Installa Capstone con PyPi:

root@kitploit:~
$ sudo pip install capstone

Installa filebytes con PyPi:

root@kitploit:~
$ sudo pip install filebytes

Opzionale (non necessario per eseguire Ropper, solo per cercare gadget):

Installa Keystone:

root@kitploit:~
$ sudo pip install keystone-engine

Installa ed esegui Ropper

root@kitploit:~
$ python setup.py install
$ ropper

Puoi anche installare Ropper con pip

root@kitploit:~
$ pip install ropper

Se preferisci, puoi usare Ropper senza installazione

root@kitploit:~
$ ./Ropper.py

Se non vuoi installare filebytes, filebytes è un sottomodulo del repository di Ropper. Questo significa che non devi installare filebytes e ropper separatamente.

root@kitploit:~
$ git clone https://github.com/sashs/ropper.git
$ cd ropper
$ git submodule init
$ git submodule update
$ ./Ropper.py

QUESTA FUNZIONALITÀ È ANCORA IN FASE DI SVILUPPO! Ropper ha un comando di ricerca semantica, che offre la possibilità di cercare gadget.

root@kitploit:~
$ ropper --file <afile> --semantic "<any constraint>"

Le seguenti dipendenze opzionali sono necessarie per usare la ricerca semantica:

Installa pyvex

root@kitploit:~
$ sudo pip install pyvex

Installa z3py

root@kitploit:~
$ python scripts/mk_make.py
$ cd build
$ make
$ sudo make install

Vincoli attualmente possibili

root@kitploit:~
reg == reg     -  assegna un registro a un altro
reg == number  -  assegna un numero a un registro
reg == [reg]   -  assegna la memoria a un registro
reg += number/reg/[reg]
reg -= number/reg/[reg]
reg *= number/reg/[reg]
reg /= number/reg/[reg]

Esempio di vincolo

root@kitploit:~
eax==1 !ebx    - imposta eax a 1 e cerca gadget che non sovrascrivono ebx

ricerca_semantica

Utilizzo

root@kitploit:~
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]

Puoi usare ropper per visualizzare informazioni su file binari in diversi formati
    e puoi cercare gadget per costruire catene ROP per diverse architetture

formati di file supportati:
  ELF
  PE
  Mach-O
  Raw

architetture supportate:
  x86 [x86]
  x86_64 [x86_64]
  MIPS [MIPS, MIPS64]
  ARM/Thumb [ARM, ARMTHUMB]
  ARM64 [ARM64]
  PowerPC [PPC, PPC64]
  SPARC [SPARC64]

generatori di catene ROP disponibili:
  execve (execve[=<cmd>], predefinito /bin/sh) [Linux x86, x86_64]
  mprotect  (mprotect=<indirizzo>:<dimensione>) [Linux x86, x86_64]
  virtualprotect (virtualprotect=<indirizzo iat vp>:<dimensione>) [Windows x86]

opzioni:
  -h, --help            mostra questo messaggio di aiuto ed esci
  --help-examples       Mostra esempi
  -v, --version         Mostra la versione
  --console             Avvia la riga di comando interattiva
  -f <file> [<file> ...], --file <file> [<file> ...]
                        Il file da caricare
  -r, --raw             Carica il file come file raw
  -a <arch>, --arch <arch>
                        L'architettura del file caricato
  --section <section>   I dati di questa sezione devono essere stampati
  --string [<string>]   Cerca la stringa <stringa> in tutte le sezioni dati
  --hex                 Stampa le sezioni selezionate in formato esadecimale
  --asm [<asm> [H|S|R] ...]
                        Una stringa da assemblare e un formato dell'output
                        (H=HEX, S=STRING, R=RAW, predefinito: H)
  --disasm <opcode>     Opcode da disassemblare (es. ffe4, 89c8c3, ...)
  --disassemble-address <address:length>
                        Disassembla l'istruzione all'indirizzo <indirizzo>
                        (0x12345678:L3). È possibile specificare il numero di
                        istruzioni da disassemblare (0x....:L...)
  -i, --info            Mostra l'intestazione del file [ELF/PE/Mach-O]
  -e                    Mostra l'EntryPoint
  --imagebase           Mostra ImageBase [ELF/PE/Mach-O]
  -c, --dllcharacteristics
                        Mostra DllCharacteristics [PE]
  -s, --sections        Mostra le sezioni del file [ELF/PE/Mach-O]
  -S, --segments        Mostra i segmenti del file [ELF/Mach-O]
  --imports             Mostra le importazioni [ELF/PE]
  --symbols             Mostra i simboli [ELF]
  --set <opzione>       Imposta le opzioni. Opzioni disponibili: aslr nx
  --unset <opzione>     Rimuove le opzioni. Opzioni disponibili: aslr nx
  -I <imagebase>        Usa questo imagebase per i gadget
  -p, --ppr             Cerca istruzioni 'pop reg; pop reg; ret'
                        [solo x86/x86_64]
  -j <reg>, --jmp <reg>
                        Cerca istruzioni 'jmp reg' (-j reg[,reg...])
                        [solo x86/x86_64]
  --stack-pivot         Stampa tutti i gadget stack pivot
  --inst-count <n bytes>
                        Specifica il numero massimo di istruzioni in un gadget
                        (predefinito: 6)
  --search <regex>      Cerca gadget
  --quality <quality>   La qualità per i gadget trovati dalla ricerca (1 =
                        migliore)
  --opcode <opcode>     Cerca opcode (es. ffe4 o ffe? o ff??)
  --instructions <instructions>
                        Cerca istruzioni (es. "jmp esp", "pop eax;
                        ret")
  --type <type>         Imposta il tipo di gadget [rop, jop, sys, all]
                        (predefinito: all)
  --detailed            Stampa i gadget in modo più dettagliato
  --all                 Non rimuove i gadget duplicati
  --cfg-only            Filtra i gadget che non superano il controllo CFG di
                        Microsoft. Solo per file PE compilati con il controllo
                        CFG abilitato (controlla DllCharachteristics) [PE]
  --chain <generator>   Genera una catena ROP [generatore parametro=valore[
                        parametro=valore]]
  -b <badbytes>, --badbytes <badbytes>
                        Imposta i byte che non devono essere contenuti nei gadget
  --nocolor             Disabilita l'output colorato
  --clear-cache         Pulisce la cache
  --no-load             Non caricare automaticamente i gadget all'avvio della
                        console (--console)
  --analyse <quality>   usato solo per l'implementazione della ricerca semantica
  --semantic constraint
                        ricerca semantica per gadget
  --count-of-findings <count of gadgets>
                        Numero massimo di gadget che verranno stampati con la
                        ricerca semantica (0 = indefinito, predefinito: 5)
  --single              Non vengono utilizzati più processi per la scansione dei gadget

esempi di utilizzo:
  [Generale]
  ./Ropper.py
  ./Ropper.py --file /bin/ls --console

  [Informazioni]
  ./Ropper.py --file /bin/ls --info
  ./Ropper.py --file /bin/ls --imports
  ./Ropper.py --file /bin/ls --sections
  ./Ropper.py --file /bin/ls --segments
  ./Ropper.py --file /bin/ls --set nx
  ./Ropper.py --file /bin/ls --unset nx
  ./Ropper.py --file /bin/ls --inst-count 5
  ./Ropper.py --file /bin/ls --search "sub eax" --badbytes 000a0d
  ./Ropper.py --file /bin/ls --search "sub eax" --detail
  ./Ropper.py --file /bin/ls --filter "sub eax"
  ./Ropper.py --file /bin/ls --inst-count 5 --filter "sub eax"
  ./Ropper.py --file /bin/ls --opcode ffe4
  ./Ropper.py --file /bin/ls --opcode ffe?
  ./Ropper.py --file /bin/ls --opcode ??e4
  ./Ropper.py --file /bin/ls --detailed
  ./Ropper.py --file /bin/ls --ppr --nocolor
  ./Ropper.py --file /bin/ls --jmp esp,eax
  ./Ropper.py --file /bin/ls --type jop
  ./Ropper.py --file /bin/ls --chain execve
  ./Ropper.py --file /bin/ls --chain "execve cmd=/bin/sh" --badbytes 000a0d
  ./Ropper.py --file /bin/ls --chain "mprotect address=0xbfdff000 size=0x21000"
  ./Ropper.py --file /bin/ls /lib/libc.so.6 --console

  [Assembla/Disassembla]
  ./Ropper.py --asm "jmp esp"
  ./Ropper.py --asm "mov eax, ecx; ret"
  ./Ropper.py --disasm ffe4

  [Ricerca]
  ./Ropper.py --file /bin/ls --search <stringadicerca>
  ?     qualsiasi carattere
  %     qualsiasi stringa

  Esempio:

  ./Ropper.py --file /bin/ls --search "mov e?x"
  0x000067f1: mov edx, dword ptr [ebp + 0x14]; mov dword ptr [esp], edx; call eax
  0x00006d03: mov eax, esi; pop ebx; pop esi; pop edi; pop ebp; ret ;
  0x00006d6f: mov ebx, esi; mov esi, dword ptr [esp + 0x18]; add esp, 0x1c; ret ;
  0x000076f8: mov eax, dword ptr [eax]; mov byte ptr [eax + edx], 0; add esp, 0x18; pop ebx; ret ;

  ./Ropper.py --file /bin/ls --search "mov [%], edx"
  0x000067ed: mov dword ptr [esp + 4], edx; mov edx, dword ptr [ebp + 0x14]; mov dword ptr [esp], edx; call eax;
  0x00006f4e: mov dword ptr [ecx + 0x14], edx; add esp, 0x2c; pop ebx; pop esi; pop edi; pop ebp; ret ;
  0x000084b8: mov dword ptr [eax], edx; ret ;
  0x00008d9b: mov dword ptr [eax], edx; add esp, 0x18; pop ebx; ret ;

  ./Ropper.py --file /bin/ls --search "mov [%], edx" --quality 1
  0x000084b8: mov dword ptr [eax], edx; ret ;; ret ;

Usare Ropper negli script

root@kitploit:~
#!/usr/bin/env python
from ropper import RopperService

# non tutte le opzioni devono essere fornite
options = {'color' : False,     # se i gadget vengono stampati, usa output colorato: default: False
            'badbytes': '00',   # byte da evitare che non devono essere presenti negli indirizzi o nelle catene ROP; default: ''
            'all' : False,      # Mostra tutti i gadget, cioè non rimuovere i gadget doppi; default: False
            'inst_count' : 6,   # Numero di istruzioni in un gadget; default: 6
            'type' : 'all',     # rop, jop, sys, all; default: all
            'detailed' : False} # se i gadget vengono stampati, usa output dettagliato; default: False

rs = RopperService(options)

##### cambia opzioni ######
rs.options.color = True
rs.options.badbytes = '00'
rs.options.badbytes = ''
rs.options.all = True


##### apri binari ######
# è possibile aprire più file
rs.addFile('test-binaries/ls-x86')
rs.addFile('ls', bytes=open('test-binaries/ls-x86','rb').read()) # altra possibilità
rs.addFile('ls_raw', bytes=open('test-binaries/ls-x86','rb').read(), raw=True, arch='x86')

##### chiudi binari ######
rs.removeFile('ls')
rs.removeFile('ls_raw')


# Imposta architettura di un binario, così è possibile cercare gadget per un'architettura diversa
# Utile per ARM se si vogliono cercare gadget ARM o Thumb
# O se hai aperto un file raw
ls = 'test-binaries/ls-x86'
rs.setArchitectureFor(name=ls, arch='x86')
rs.setArchitectureFor(name=ls, arch='x86_64')
rs.setArchitectureFor(name=ls, arch='ARM')
rs.setArchitectureFor(name=ls, arch='ARMTHUMB')
rs.setArchitectureFor(name=ls, arch='ARM64')
rs.setArchitectureFor(name=ls, arch='MIPS')
rs.setArchitectureFor(name=ls, arch='MIPS64')
rs.setArchitectureFor(name=ls, arch='PPC')
rs.setArchitectureFor(name=ls, arch='PPC64')
rs.setArchitectureFor(name=ls, arch='SPARC64')
rs.setArchitectureFor(name=ls, arch='x86')


##### carica gadget ######

# carica gadget per tutti i file aperti
rs.loadGadgetsFor() 

# carica gadget per un solo file aperto
ls = 'test-binaries/ls-x86'
rs.loadGadgetsFor(name=ls)

# cambia tipo di gadget
rs.options.type = 'jop'
rs.loadGadgetsFor() 

rs.options.type = 'rop'
rs.loadGadgetsFor() 

# cambia conteggio istruzioni
rs.options.inst_count = 10
rs.loadGadgetsFor() 

##### stampa gadget #######
rs.printGadgetsFor() # stampa tutti i gadget
rs.printGadgetsFor(name=ls)

##### Ottieni gadget ######
gadgets = rs.getFileFor(name=ls).gadgets


##### cerca pop pop ret ######
pprs = rs.searchPopPopRet(name=ls) # cerca ppr solo in 'test-binaries/ls-x86'
pprs = rs.searchPopPopRet()        # cerca ppr in tutti i file aperti
for file, ppr in pprs.items():
    for p in ppr:
        print p

##### carica jmp reg ######
jmp_regs = rs.searchJmpReg(name=ls, regs=['esp', 'eax']) # cerca jmp reg solo in 'test-binaries/ls-x86'
jmp_regs = rs.searchJmpReg(regs=['esp', 'eax'])
jmp_regs = rs.searchJmpReg()                             # cerca jmp esp in tutti i file aperti
for file, jmp_reg in jmp_regs.items():
    for j in jmp_reg:
        print j


##### cerca opcode ######
ls = 'test-binaries/ls-x86'
gadgets_dict = rs.searchOpcode(opcode='ffe4', name=ls)
gadgets_dict = rs.searchOpcode(opcode='ffe?')
gadgets_dict = rs.searchOpcode(opcode='??e4')

for file, gadgets in gadgets_dict.items():
    for g in gadgets:
        print g

##### cerca istruzioni ######
ls = 'test-binaries/ls-x86'
for file, gadget in rs.search(search='mov e?x', name=ls):
    print file, gadget

for file, gadget in rs.search(search='mov [e?x%]'):
    print file, gadget    

result_dict = rs.searchdict(search='mov eax')
for file, gadgets in result_dict.items():
    print file
    for gadget in gadgets:
        print gadget

##### assembla istruzioni ######
hex_string = rs.asm('jmp esp')
print '"jmp esp" assemblate nella stringa esadecimale =', hex_string
raw_bytes = rs.asm('jmp esp', format='raw')
print '"jmp esp" assemblate in byte raw =', raw_bytes
string = rs.asm('jmp esp', format='string')
print '"jmp esp" assemblate in stringa =',string
arm_bytes = rs.asm('bx sp', arch='ARM')
print '"bx sp" assemblate nella stringa esadecimale =', arm_bytes

##### disassembla byte #######
arm_instructions = rs.disasm(arm_bytes, arch='ARM')
print arm_bytes, 'disassemblati in "%s"' % arm_instructions

# Cambia l'imagebase, questo cambia anche l'imagebase per tutti i gadget caricati di questo binario
rs.setImageBaseFor(name=ls, imagebase=0x0)

# ripristina image base
rs.setImageBaseFor(name=ls, imagebase=None)

gadgets = rs.getFileFor(name=ls).gadgets

# indirizzo del gadget
print hex(gadgets[0].address)

# ottieni i byte dell'istruzione del gadget
print bytes(gadgets[0].bytes).encode('hex')

# rimuovi tutti i gadget che contengono byte non validi nell'indirizzo
rs.options.badbytes = '000a0d'  # i gadget vengono filtrati automaticamente

Pagina del progetto

http://scoding.de/ropper

Screenshot

caricamento

x86

arm

mips

ppc

catena_rop

intestazione

Scarica lo strumento