Reversing Tools Vademecum
From UIC
By Zero_G
Soprattutto per venire incontro alle persone che si avvicinano al reversing e che spesso non sanno quali programmi da usare e a cosa servono, qui di seguito riporto una lista dei tools fondamentali, basata su un workflow generale da seguire quando si affronta un nuovo target. :idea:
premetto che questa non vuole essere una lista esaustiva di tutti i tools potenzialmente utili, dato che ne esiste un'infinità per i bisogni più disparati (basta fare un salto su protools per rendersene conto), ma piuttosto raprpesenta un elenco di quelli migliori e più diffusi, quelli che sono entrati un po' nella cassetta degli attrezzi di base di un reverser.
PS: la numerazione non è casuale e rappresenta più o meno l'ordine in cui di solito vanno usati questi strumenti.
V A D E M E C U M__D E L__B U O N__R E V E R S E R
Analyzers
-(1)- PEiD (anche StudPE va benino): analizza un eseguibile permettendo di riconoscere il compilatore ed eventuale packer/crypter; supporta anche plugin aggiuntivi per svolgere varie funzioni (generic unpacking, krypto analyzer, CRC, ecc...).
Home: PEiD
Decompilers
-(2)- IDA Pro: per avere un disassemblato (interattivo) di qualità. Occhio che questo è un programma commerciale, quindi o lo compri, o ti accontenti della demo.
Home: IDA Pro
Se proprio non riuscite a procurarvi IDA (ma dovete esserne sicuri!), potete rispolverare anche W32Dasm, ma devo dire che come tool ormai è veramente sorpassato in tutti i campi (accuratezza, compatibilità, interattività, ecc...)
-(3)- A seconda del linguaggio in cui è scritto il target possono essere necessari anche strumenti appositi:
- DeDe: se il programma è scritto in Delphi, questo è secondo me il miglior tool in circolazione per ricavare un sacco di informazioni normalmente ignorate da un disassemblatore generico.
- SmartCheck: se il programma è in VB compilato, questo vetusto debugger rappresenta comunque un ottimo supporto per individuare le procedure VB. [commerciale]
Home: sta dentro Numega DevPartner...
- DJ Decompiler: se invece si tratta di Java, questo tool è il massimo in fatto di ricostruzione del listato originale a partire dai file .class in bytecode (si basa sul decompilatore gratuito JAD).
Home: Dj Decompiler
- WKTVBDebugger: nome impronunciabile di un debugger un po' sui generis in grado di trattare eseguibili VB in pseudo-codice, ma di questi se ne trovano davvero pochi in giro.
Home: Inactive
-(4)- Un debugger per capire il flusso ed osservare i valori delle variabili in runtime: a te la scelta tra i nostri due amici... per quanto riguarda l'universale dicotomia di giudizio su entrambi, ti rimando a [1]
- SoftIce: debugger kernel-mode potentissimo, entrato ormai nella storia del reversing; presente sulla scena da più di 10 anni (ora incorporato nella suite DriverStudio della Numega), rappresenta il tool da vero duro (con tanto di comandi da digitare manualmente). l'installazione sotto XP ha dato spesso problemi ([2] e [3]), alcune procedure non sono proprio user-friendly ed il costo decisamente proibitivo, quindi volendo può essere sostituito con...
- OllyDbg: debugger relativamente recente, ma con delle ottime caratteristiche... dalla sua, la facilità d'uso e la notevole potenza, soprattutto se confrontata con il prezzo (è freeware). Incorpora un sdk che permette di sviluppare plugins, oltre anche ad utilizzare i numerosi già esistenti, tra cui segnalo gli ottimi OllyDump e OllyScript, e recentemente anche la CommandLine del nostro Que.
Home: [programma]: OllyDbg
URL: [forum e plugins]: OllyDbg Forum & Plugins
-(5)- Se il programma è compresso/crittato puoi aver bisogno del relativo unpacker (se esiste) e per questo (ed anche per qualsiasi altra necessità di tools) vi rimando alla sezione Downloads o alla panacea del reversing: Protools. Lì potrete soddisfare tutti i vostri piaceri (di download)...
- ProcDump contiene una procedura di unpacking automatico generico che a volte dà buoni risultati...
Home: Inactive
Per dumpare, riallineare sezioni e compagnia bella, ti consiglio invece il più aggiornato PE Tools (vedi più in basso), oppure qualche plugin del debugger, tipo OllyDump o IceDump, rispettivamente per OllyDbg e SoftIce (ma va?). Per gusti e preferenze vedi [4].
- ImportReconstructor e' l'ideale se vi state addentrando nel manual unpacking, permette di ricostruire una import table corrotta a causa del dump di un programma compresso.
Home: Inactive
System Monitors
-(6)- Spesso i programmi accedono a file esterni o al registro di windows, ma questi accessi possono essere rispettivamente monitorati tramite due tools della SysInternals: FileMon e Regmon
Home: Sysinternals
EXE Tools
-(7)- Una volta individuate le modifiche da apportare, se non si vuole usare direttamente le funzioni del debugger, si può opzionalmente sfruttare un editor esadecimale esterno, tipo Hiew o HexWorkshop, entrambi ottimi, è solo questione di gusto.
Various
-(8 )- Per i ritocchi finali o comunque per esaminare un eseguibile anche a monte di tutta l'analisi, puoi usare:
- PE Tools: pregevole tool che permette di avere TUTTE le informazioni sul PE di un eseguibile, di dumpare processi in memoria, ricostruire IT corrotte, e molto altro ancora (mi piace un sacco questo programma e lo uso spessissimo)
Home: PE Tools
- Explorer Suite: La suite di Ntos per il PE Editing
Home: Explorer Suite]
- LordPE: altra valida alternativa...
Home: Inactive
-(9)- Altre cose carine...
- Universal Patcher Pro: crea un patcher per un eseguibile basandosi sul confronto tra files, molto carino, include al il supporto per il patching al registro di windows
Home: Inactive
- XNResourceEditor 3: permette di personalizzare icone, label, menù di un'applicazione
Home: Inactive
- Calcolatrice di Windows: sempre a portata di mouse per convertire da/in esadecimale!
Home: Start ---> Accessori ---> Calcolatrice
- La lista degli Opcodes per processori Intel: se perdi la bussola mentre stai leggendo il disassemblato...
- Una lista aggiornata delle API di Windows: per questo c'è l'ottimo API Guide, che contiene più di 900 funzioni e relativo help in linea.
Home: API Guide
- Qualsiasi altra reference possa servire per il programma in questione (MSDN, funzioni VB, manuali vari, ecc...)
Home: MSDN
- Non ultimo, Internet: è molto probabile che qualcun'altro abbia già affrontato un problema simile al tuo, quindi vale sempre la pena di cercare, se non altro per assicurarsi che non esista un tutorial già bell'e fatto proprio sul programma target! Ovviamente su internet si trova anche molto di più, quindi inizia cercando sul nostro Forum, poi usa il motore di ricerca della Home Page, quindi passa alla sezione [Links] o direttamente su Google.
Beh, che aspettate a smanettare con tutto questo ben di dio? :D
!! buon reversing a tutti !!
-=Zero_G=-
PS: se qualcuno usa altri programmi e/o ritiene che altri siano migliori di quelli che ho segnalato, ne discuta pure con gli altri, che io eventualmente aggiorno la lista, così possiamo avere un bell'elenco di riferimento aggiornato e commentato! Che ne dite?