Fireworx Crackme10 Unpacking
From UIC
Fireworx Crackme10 Unpacking
Contents |
| Infos | |
|---|---|
| Author: | Chrispale |
| Email: | . |
| Website: | . |
| Date: | 18/05/2007 (dd/mm/yyyy) |
| Level: |
|
| Language: | Italian |
| Comments: | Unpacking |
Introduzione
Questo tutorial spiega come fare l'unpacking del Fireworx Crackme10; certo, il plugin di PEiD "PEiD Generic Unpacker" lo unpacka automaticamente...ma a noi non piace la via più semplice, vero? Tranquilli, l'unpacking risulterà abbastanza semplice; i passaggi sono questi:
- Debuggare il programma fino all'Original Entry Point (OEP) in modo che in memoria venga caricato il programma unpackato.
- Dumpare il programma unpackato.
- Ricostruire l'Import Access Table (IAT) e fixare il file dumpato.
Tools & Files
Essay
Debugging
Apriamo il Fireworx Crackme10 con PEiD; ci informa che il file è packato con ASPack. Troviamo ora l'Original Entry Point con il plugin di PEiD "Generic OEP Finder"; l'OEP rilevato sarà 00454144.
Ora apriamo il file con OllyDbg; probabilmente darà un Access Violation, quindi premiamo SHIFT+F9 per proseguire. Quando OllyDbg ci informa che il file è compresso, clickiamo su "Si" per continuare l'analisi; ecco che ci troviamo all'indirizzo 00429318, Entry Point del programma.
Adesso dobbiamo debuggare il programma fino all'OEP; abbiamo 2 metodi per arrivare velocemente all'OEP.
Metodo 1
Utilizziamo per 2 volte il tracer "Find OEP by Section Hop (Trace over)" del plugin OllyDump.
La prima volta il tracer breaka all'indirizzo 0046F000, la seconda volta all'indirizzo 00454144, lo stesso indicato da PEiD! Allora è una conferma che effettivamente l'OEP è all'indirizzo 00454144.
Metodo 2
Possiamo raggiungere direttamente l'OEP clickando sul tasto "Go to address in Disassembler" e scrivendo l'indirizzo 00454144.
Adesso dobbiamo breakare il debug sull'OEP; per fare ciò, clickiamo con il tasto SX del mouse sull'indirizzo 00454144 in modo da selezionarlo (comunque dovrebbe essere già selezionato), quindi clickiamo il tasto DX, scegliamo "Breakpoint" e "Run to selection"; più velocemente, selezioniamo l'indirizzo 00454144 e premiamo F4.
Arrivati all'OEP, siamo pronti per dumpare il programma.
Dumping
Per dumpare il programma, possiamo usare il plugin OllyDump e scegliere "Dump debugged precess".
Attenzione: deselezioniamo l'opzione "Rebuild Import" in quanto il rebuild lo faremo manualmente nel prossimo paragrafo.
Salveremo il file dumpato con il nome "FireworxDump.exe"; se lo proviamo a lanciare, vedremo che da errore perchè l'IAT va ricostruito.
Rebuilding
NON chiudiamo OllyDbg e lanciamo Import Reconstructor; nel menu a tendina in alto "Attach to an Active Process", selezioniamo il nostro programma in esecuzione "fireworxcrackme10.exe". In basso, in "IAT infos needed", inseriamo nella casella "OEP" l'indirizzo dell'OEP senza ImageBase (00054144) e clickiamo su "IAT AutoSearch"; se tutto va bene, ci si apre una finestra "Found something!" che ci conferma di aver trovato degli indirizzi riferiti all'Original IAT e ci chiede di clickare su "Get Imports". Lo facciamo ed in "Imported Functions Found" compare la lista delle librerie importate dal programma; abbiamo ricostruito l'IAT...cioè, l'ha ricostruito ImpRec!
A questo punto non ci resta che clickare su "Fix Dump" e selezioniamo il nostro file precedentemente dumpato, ovvero "FireworxDump.exe"; ora il file è funzionante e rappresenta la versione unpackata del nostro programma.
Note Finali
Vi ho fatto lavorare più del previsto...ma è stato didattico! Ora vi spiego perchè. Nel paragrafo Dumping vi ho detto di DESELEZIONARE l'opzione "Rebuild Import" di OllyDump perchè l'IAT andava ricostruito con Import Reconstructor; questa procedura si usa spesso (anzi, non basta...) per packer più "cattivi" ma per questo packer bastava SELEZIONARE l'opzione in quanto il rebuilding automatico di OllyDump in questo caso funziona. Fate una prova e vedrete che il file dumpato parte senza dare errori.
Disclaimer
I documenti qui pubblicati sono da considerarsi pubblici e liberamente distribuibili, a patto che se ne citi la fonte di provenienza. Tutti i documenti presenti su queste pagine sono stati scritti esclusivamente a scopo di ricerca, nessuna di queste analisi è stata fatta per fini commerciali, o dietro alcun tipo di compenso. I documenti pubblicati presentano delle analisi puramente teoriche della struttura di un programma, in nessun caso il software è stato realmente disassemblato o modificato; ogni corrispondenza presente tra i documenti pubblicati e le istruzioni del software oggetto dell'analisi, è da ritenersi puramente casuale. Tutti i documenti vengono inviati in forma anonima ed automaticamente pubblicati, i diritti di tali opere appartengono esclusivamente al firmatario del documento (se presente), in nessun caso il gestore di questo sito, o del server su cui risiede, può essere ritenuto responsabile dei contenuti qui presenti, oltretutto il gestore del sito non è in grado di risalire all'identità del mittente dei documenti. Tutti i documenti ed i file di questo sito non presentano alcun tipo di garanzia, pertanto ne è sconsigliata a tutti la lettura o l'esecuzione, lo staff non si assume alcuna responsabilità per quanto riguarda l'uso improprio di tali documenti e/o file, è doveroso aggiungere che ogni riferimento a fatti cose o persone è da considerarsi PURAMENTE casuale. Tutti coloro che potrebbero ritenersi moralmente offesi dai contenuti di queste pagine, sono tenuti ad uscire immediatamente da questo sito.
Vogliamo inoltre ricordare che il Reverse Engineering è uno strumento tecnologico di grande potenza ed importanza, senza di esso non sarebbe possibile creare antivirus, scoprire funzioni malevoli e non dichiarate all'interno di un programma di pubblico utilizzo. Non sarebbe possibile scoprire, in assenza di un sistema sicuro per il controllo dell'integrità, se il "tal" programma è realmente quello che l'utente ha scelto di installare ed eseguire, né sarebbe possibile continuare lo sviluppo di quei programmi (o l'utilizzo di quelle periferiche) ritenuti obsoleti e non più supportati dalle fonti ufficiali.






