Unpacking WinUpack 0.3x
From UIC
Unpacking di WinUpack 0.3x
Contents |
| Unpacking WinUpack 0.3x | |
|---|---|
| Author: | Di4b0liK |
| Email: | di4b0lik666@gmail.com |
| Website: | www.ogmdevelopment.com |
| Date: | 11 / 01 / 2011 (dd/mm/yyyy) |
| Level: |
|
| Language: | Italian |
| Comments: | Revisione di un vecchio tutorial che illustra un metodo veloce per sistemare questo packer |
Introduzione
WinUpack è a dir la verità un packer non molto conosciuto, ma lo si trova spesso su programmi in ambito gestionale; Visto che di tutorial sull' unpacking "standard" se ne trovano a bizzeffe, voglio illustrarvi un metodo molto semplice e veloce, funzionante sul 90% delle versioni del packer. Il programma che andremo ad analizzare in questa guida è un unpackme preso da tuts4you, protetto con la versione 0.32 del packer; Come sempre cercherò di usare un linguaggio comprensibile, ma per qualunque dubbio non esitate a contattarmi. Dopo questa breve introduzione è ora di mettere in moto il buon vecchio olly...
Tools & Files
URL o FTP del programma
Riconoscimento Del Packer
Apriamo RDG e analizzando il programma scopriremo che è protetto da WinUpack. Se volete essere sicuri, analizzatelo anche con PEiD oppure prendete un altro programma con la stessa protezione e confrontate gli EP.
Trovare L' OEP E Dumpare Il Programma
Apriamo olly e carichiamo il programma. Ci troviamo davanti ad un jump e a tutti byte vuoti.
Andiamo subito a vedere dove porta quel jump clickando su ENTER.e ci troveremo davanti a
Ora steppiamo con F8 fino alla prima call che incontriamo, ed eseguiamola premendo F7;
Ci ritroveremo davanti a un PUSH EAX all’indirizzo 0049A068. Ora spostiamoci leggermente in su fino ad arrivare al primo JE che incontriamo. Ebbene si, quello è un jump all’OEP :) Per verificare che quello sia effettivamente un jump all’oep mettiamo un Breakpoint Hardware on execution sul jump.
Ora digitiamo CTRL + F2 per restartare l’applicazione, poi premiamo F9 per avviarla, e ci troveremo proprio su questo JE quindi, prima di proseguire, dobbiamo modificare il jump in modo da far eseguire sempre il salto. Per fare questo togliamo il beakpoint, poi facciamo click destro -> binary -> edit e modifichiamo i valori come mostrato in figura. In questo modo il JE diventerà un JNZ
Abbiamo quasi finito, premiamo F8 e verremmo riportati su una serie di byte che non sembrano contenere nulla, ma in realtà basta premere CTRL + A per rianalizzare il codice; In questo modo ci troveremo davanti a un
ossia molto vicino all’OEP, perciò andiamo leggermente sopra nel codice, e troveremo il famigerato oep, situato all’indirizzo 004271B0 . Per verificare che questo sia veramente l’oep, mettiamo un breakpoint hardware on execution, poi premiamo CTRL + F2 e in seguito F9, e se tutto va bene ci ritroveremo ancora su 004271B0. Se si dovesse verificare qualche eccezione premiamo SHIFT + F9 e verremo portati all’oep.
Perfetto, ora che ci siamo accertati di essere nel punto giusto con OllyDump creiamo il dump, prendendo nota dell’entry point modificato (quello evidenziato in figura).
Ricostruire La Import Table Con ImpRec
Aprite imprec, caricate il crackme e compilatelo come mostrato in figura (notate che l’oep è stato modificato inserendo quello trovato con olly).
Ora premete “IAT AutoSearch”, poi “Get Imports” e dovrebbero apparire tutti “YES” (che stanno ad indicare che tutte le imports sono state riconosciute e risultano valide) come mostrato in figura.
Per finire premete “Fix Dump” e selezionate il dump che abbiamo creato prima con ollydump, date invio e avremo battuto questo packer.
Note Finali
Come avete visto questo metodo risulta davvero utile, permettendo di effettuare l'unpacking in pochissimi minuti, e senza l'utilizzo di strumenti particolari. I ringraziamenti vanno a tutte le persone che negli anni hanno contribuito ad aiutarmi e dalle quali ho imparato veramente molto. Un rigraziamento particolare va come sempre a EvOlUtIoN per avermi fatto da maestro e a Quequero che mi ha dato la possibilità di inserire i miei tutorial anche quì sul sito.
Alla Prossima!
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 malevole 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.








