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
ScratchABit — Disassemblatore interattivo facilmente riconfigurabile e modificabile con API per plugin compatibile con IDAPython | Kitploit
Strumenti/GitHubGitHub/pfalcon/scratchabit
Analisi StaticaReverse EngineeringDebuggerAnalisi di Binari
GitHubpfalcon/scratchabit

ScratchABit

Disassemblatore interattivo facilmente riconfigurabile e modificabile con API per plugin compatibile con IDAPython

Vedi Repository
413485 anni 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 →
Condividi

ScratchABit

ScratchABit è un disassemblatore incrementale interattivo con capacità di analisi del flusso di dati/controllo. ScratchABit è dedicato agli sforzi della comunità OpenSource del reverse engineering (reverse engineering per produrre driver/firmware OpenSource per hardware non adeguatamente supportato dai vendor, per l'interoperabilità hardware e software, per la ricerca sulla sicurezza).

ScratchABit supporta l'API IDAPython, ben nota nella comunità, per scrivere moduli di disassemblaggio/estensione.

ScratchABit è un lavoro in corso, le funzionalità vengono aggiunte man mano che sono necessarie, i contributi sono benvenuti.

ScratchABit è rilasciato sotto i termini della GNU General Public License v3 (GPLv3).

Requisiti/manifesto

  1. Non dovrebbe essere scritto in un linguaggio offuscato. Questi includono linguaggi troppo di basso livello, che permettono di accedere a variabili non inizializzate, che non differenziano tra variabili e funzioni/procedure, che iniziano gli indici degli array da numeri arbitrari, ecc., ecc. ScratchABit è scritto in Python (versione moderna, Python3) per il tuo piacere e sanità mentale.

  2. Il framework dell'interfaccia utente dovrebbe permettere l'interazione dell'utente al livello necessario, non aggiungere dipendenze, gonfiore, problemi e incompatibilità tra le versioni del framework. ScratchABit attualmente utilizza una semplice interfaccia utente testuale a schermo intero, usando sequenze di escape ANSI/VT100 (sì, anche la libreria curses è stata considerata una dipendenza troppo pesante da imporre agli utenti).

  3. Dovrebbe sfruttare formati di testo facili da usare per memorizzare il "database", per facilitare il riutilizzo e la scrittura di strumenti, e l'archiviazione in sistemi di controllo versione.

Installazione

Per usare ScratchABit, hai bisogno di Python3 installato (testato con Python 3.3 fino a 3.7) e un terminale VT100 (minimo) o XTerm (consigliato) o emulatore di terminale (qualsiasi sistema Unix dovrebbe essere compatibile, come Linux/BSD/ecc., vedere FAQ sotto per maggiori dettagli).

Clona il codice usando:

root@kitploit:~
git clone --recursive https://github.com/pfalcon/ScratchABit

Se hai clonato il codice senza --recursive, esegui git submodule update --init nella directory ScratchABit.

ScratchABit ora include plugin CPU basati su Capstone Engine, che permettono l'accesso a diverse architetture CPU. Per usarli, il modulo Python per Capstone (recente) deve essere installato (di preferenza rispetto ai pacchetti forniti dalle distribuzioni OS, spesso obsoleti). Il modo più semplice è installarlo nella directory dei pacchetti utente Python:

root@kitploit:~
pip3 install --no-cache-dir --user capstone

Un'alternativa è installarlo in un ambiente virtuale Python all'interno della directory ScratchABit:

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
pip3 install --no-cache-dir capstone

Ogni volta che apri una nuova sessione di terminale per lavorare con ScratchABit, esegui di nuovo il comando source .venv/bin/activate per attivare l'ambiente virtuale.

Se nulla di quanto sopra funziona, puoi provare a installare il pacchetto capstone a livello di sistema (non consigliato):

root@kitploit:~
sudo pip3 install --system capstone

Avvio rapido

Se vuoi disassemblare un file in formato eseguibile auto-descrittivo (come ELF), passalo semplicemente come argomento a ScratchABit.py. Il repository include diversi file example-*.elf per varie architetture per un avvio rapido. Ad esempio, per provare la versione x86 32bit:

root@kitploit:~
python3 ScratchABit.py example-x86_32.elf

In alternativa, se vuoi disassemblare un file binario grezzo, devi creare un file .def (definizione) per specificare quali aree di memoria sono definite per il codice, a quale indirizzo caricare il file binario, ecc. (Nota: un file .def può essere utile anche per file .elf e simili). Il repository include un semplice codice binario grezzo x86_64 e il corrispondente file example-x86_64.def (guarda al suo interno per una descrizione delle opzioni disponibili):

root@kitploit:~
python3 ScratchABit.py example-x86_64.def

Premi F9 per accedere ai menu (il mouse funziona anche nei terminali XTerm-compatibili). Premi F1 per ottenere aiuto sui tasti funzione (la maggior parte delle azioni sono accessibili anche tramite menu). Il flusso di lavoro di ScratchABit è simile ad altri disassemblatori interattivi (un po' di esperienza pregressa o letture di base possono essere utili).

Uso dei plugin

I plugin processore IDAPython possono essere caricati da qualsiasi punto del modulo Python. In alternativa, puoi creare un link simbolico/copiare i file .py del plugin nella sottodirectory plugins/cpu/.

Dopo aver reso disponibile il plugin, crea un nuovo file di definizione basato su example-x86_64.def che imposta il nome del modulo plugin (senza estensione .py) nella riga cpu xxx.

Per un esempio molto semplice che utilizza un plugin esterno, vedi questo file esp8266.def che funziona con il plugin xtensa.py dal repository ida-xtensa2.

TODO/Cose da decidere

  • Attualmente utilizza più file per il "database", ognuno che memorizza un particolare tipo di informazione. Passare a un singolo file YAML invece?
  • Aggiungere colore (priorità bassa, patch (non gonfiate!) benvenute).
  • Pochi comandi UI importanti da implementare ancora per un lavoro confortevole. (Tutti i comandi più importanti dovrebbero esserci, altre funzionalità sono previste tramite plugin).
  • Offrire di salvare il DB all'uscita se modificato.
  • Integrazione Git per il salvataggio del DB.
  • Migliorare la robustezza (aggiungere gestore delle eccezioni a livello del loop principale, non abortire l'applicazione, mostrare all'utente/log e continuare).
  • Cercare di gestire le incoerenze del flusso di codice (ad es. all'interno di un'istruzione - priorità bassa per l'uso previsto) e le incoerenze di accesso ai dati (ad es. accesso a byte individuali di una parola precedentemente rilevata - priorità più alta). (Migliorato in 1.4.)
  • Vedere come supportare altri tipi di plugin IDAPython oltre ai soli moduli processore.
  • Analizzare e usare le informazioni di debug (ad es. DWARF) presenti nei file ELF (ecc.).

FAQ

D: Quali processori/architetture sono supportati?

R: ScratchABit non supporta alcuna architettura di processore autonomamente, è completamente riattrezzabile tramite plugin API IDAPython. Molti plugin sono disponibili, scrivere un nuovo plugin è facile. Per permettere agli utenti di provare ScratchABit, un semplice plugin per processore x86 è incluso nella distribuzione, che utilizza il disassemblatore Pymsasid sotto il cofano.

Dalla versione 2.0, è incluso anche un plugin Capstone, che permette l'accesso a diverse architetture, tra cui x86, ARM, MIPS, PowerPC, SPARC, ecc. (il supporto delle architetture viene abilitato gradualmente in base ai test degli utenti).

Puoi leggere riguardo ai plugin distribuiti con ScratchABit nel README per la directory plugins/cpu/.

D: Debugger?

R: ScratchABit è dedicato all'analisi statica e al facile supporto per nuove architetture CPU (basta scrivere un nuovo plugin CPU in Python - puoi ottenere risultati iniziali in poche ore). L'analisi dinamica non è stata concepita come funzionalità principale e non ci sono piani immediati per implementarla. Le patch sono comunque benvenute.

D: Decompilatore?

R: Esiste un progetto correlato, chiamato ScratchABlock per l'analisi approfondita del programma, la trasformazione e la decompilazione. È previsto che man mano che ScratchABlock matura, alcune delle sue funzionalità saranno disponibili all'interno di ScratchABit (forse tramite plugin).

D: Non sono su Linux, come posso eseguire ScratchABit?

R: Installa Linux in un emulatore/VM sul tuo sistema e goditi.

D: Screenshot obbligatorio?

R: Sicuro:

screenshot

Scarica lo strumento