IrfanView 3.9.2 UnASPack
From UIC
IrfantView392
Contents |
| IrfanView 3.9.2 UnASPack | |
|---|---|
| Author: | §-Death_Reaver-§ |
| Email: | death.reaver@leonardo.it |
| Website: | deathreaver.altervista.org |
| Date: | 09/01/2005 (dd/mm/yyyy) |
| Level: |
|
| Language: | Italian |
| Comments: | |
Introduction
Dopo il mio primo tutorial era ora di fare qualcosina di più complesso. Da tempo stavo cercando un programma packato abbastanza semplice, ma in realtà non dovevo cercarlo: ce lo avevo già. IrfanView è SICURAMENTE il + veloce e il + versatile visualizzatore di immagini che esiste sulla faccia della terra! Se usate acdsee o altri solo per visualizzare immagini, BUTTATELI e scaricatevi IrfanView
OBBLIGATORIO: LEGGERE IL TUTURIAL RELATIVO ALL'UIC UNPACKER PROJECT DI PNLUCK (obbligatorio per una perfetta comprensione della protezione e del tutorial) e naturalmente anche quello di Andreageddon.
Tools
Essay
Come sempre (e come a mio dire si dovrebbe sempre fare) apriamo PeID caricando il file principale, ovvero "i_view32.exe". Salterà subito all'occhio (nella parte bassa della finestra) la stringa "ASPack 2.12 -> Alexey Solodovnikov" brutto infame! Da notare anche il nome della sezione dell'EntryPoint del packer .aspack che fa capire al volo con chi abbiamo a che fare.
Come detto sopra, apriamo Softice il cui unico scopo in questo tutorial sarà farci trovare subito l'EntryPoint: e in che modo? Per questo scopo ho usato una tecnica già usata in un altro tutorial: Mettiamo un Breakpoint su GetVersion e appena softice poppa facciamo un po' di backtrace per trovare la solita struttura di un classico OEP (push ebp/mov ebp,esp/cmp eccetera) segnatevi l'indirizzo e andiamo avanti. (i più sofisticati possono ravviare il computer per far sparire softice ma non ce n'è bisogno poiché non chi sono controlli anti-debug).
Ora il nostro scopo sarà arrivare all' OEP(cioè quello trovato con Softice). Con Olly potete mettere un bp sull'indirizzo dell' OEP digitando (sulla commandline o se avete la commandbar) "bp XXXXXXX" ma a me non ha funzionato(bah!) per questo mi sono basato sul tutorial di PNLUCK (il codice di AsPack 2.12 è sempre uguale, istruzione più istruzione meno).
Leggendo il tutorial si può capire che per arrivare all'entry point dobbiamo passare per qui: (dal tute)
0043839F PUSH EAX salva eax
004383A0 ADD EAX,DWORD PTR SS:[EBP+422] // gli aggiunge l'imagebase
004383A6 POP ECX //carica ecx
004383A7 OR ECX,ECX //e fa un bel OR
004383A9 MOV DWORD PTR SS:[EBP+3A8],EAX // mette l'OEP al posto di quell "push 0" a 4383BA
004383AF POPAD //rimette a posto i valore che c'erano quando è stato lanciato il prg
004383B0 JNZ SHORT uic_test.004383BA // Se ecx è diverso da zero continua(dovrebbe jmpare sempre)
004383B2 MOV EAX,1
004383B7 RETN 0C
004383BA PUSH 0 //questo push diventa: "PUSH uic_test.004012A5", e mette in ESP l'indirizzo dell'OEP
004383BF RETN //e ritorna, all'indirizzo indicato da ESP.
Se non volete usare questo metodo, ce ne è uno che con i packer funge sempre: "search command" permette di cercare un istruzione particolare. Quindi, per andare all'entrypoint dobbiamo trovare prima un istruzione che sia allo stesso tempo rara(che ce ne siano poche) e che non cambi(SMC e company). L'istruzione più adatta è "ADD EAX,DWORD PTR SS:[EBP+422]" o anche "push eax". Con Olly premete CTRL+F e digitate l'istruzione. Dopodichè confrontate le istruzioni successive e/o precedenti con quelle del tutorial per sincerarsi che siamo nella zona giusta, altrimenti CTRL+L (cerca il prossimo). Una volta trovata la zona giusta, mettete un bp e via…
come si vede prende l'RVA dell'entry-point, gli somma l'imagebase e ottiene il VA. Arriviamo all'oep e potremo dumpare, ma non conviene. Seguiamo il tute di pnluck che dice di fermarmi e dumpare prima che l'IT venga disintegrata.
Con lo stesso metodo cerchiamo di trovare il punto giusto dove brekkare: io consiglierei ricercare il comando "MOV DWORD PTR DS:[EDI],EAX" che è un istruzione abbastanza rara. Così arriveremo nella zona X.
Mettiamo un bp, avviamo, leviamo il bp (facoltativo, poiché la sezione che cripta a fine lavoro non sarà mai eseguita), apriamo LordPe e dumpiamo scegliendo il processo e selezionando "Dump full".
Appena finito ricordiamoci di sistemare l'OEP al suo posto (l'OEP è VA=004bca89), Finalmente avviamo e pufff!! Il prog non parte.
Cosa mancherà? Ma sì, l'indirizzo dell'IT! Per trovare quello esatto dobbiamo cercare (sempre con lo stesso metodo…) l'istruzione "MOV EDX,DWORD PTR SS:[EBP+422]" (l'ho scelta sempre per lo stesso motivo: è rara)
Arrivati, vedremo alla riga precedente ESI che viene sommato al RVA dell'IT. Quindi prendete il LordPe e scegliete PeEditor poi directories ed infine sostituite l'indirizzo dell'IT con quello trovato. Ora il programma funziona e possiamo finalmente godercelo!!
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.