IrfanView 3.9.2
(Rapid Unpack Aspack 2.12)

Data

by "DEATH_REAVER"

 

09/01/05

UIC's Home Page

Published by Quequero

(da una lettera): […]non ce la faccio più a stare con te!...

Rapido e indolore, grazie death :)

..Per te valgo meno di zero!

Addio: Ti lascio

NULL

....

Home page (se presente): nada

E-mail: [email protected]

....

Difficoltà

(X)NewBies ( )Intermedio ( )Avanzato ( )Master

 

Introduzione

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à

Tools usati

Tools:

PeID                     

SOftICE                  //ci servirà a trovare velocemente l’OEP

OllyDbg                  // se Softice e Olly hanno delle caratteristiche diverse,perche non usarli tutti e due?

LordPe

URL o FTP del programma

http://www.irfanview.com

Notizie sul programma

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.

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)

0043839A   MOV EAX,12A5     0x12A5 è il VA dell’entry point

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   PUSHquesto 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!!

                                                                                                               DEATH_REAVER

Note finali

Ringrazzzzzio prima di tutto Pnluck che con il suo tutorial mi ha aiutato molto, poi Andreageddon e naturalmente la mail-list e Mister Q (ma chi sarà mai?)

Messaggio per Mister Q: Quando riapri quella benedetta sezione tools? Oggi con l'unpacker di Pnluck :) NdQue

Disclaimer

Vorrei ricordare che il software va comprato e  non rubato, dovete registrare il vostro prodotto dopo il periodo di valutazione. Non mi ritengo responsabile per eventuali danni causati al vostro computer determinati dall'uso improprio di questo tutorial. Questo documento è stato scritto per invogliare il consumatore a registrare legalmente i propri programmi, e non a fargli fare uso dei tantissimi file crack presenti in rete, infatti tale documento aiuta a comprendere lo sforzo che ogni sviluppatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili.

Reversiamo al solo scopo informativo e per migliorare la nostra conoscenza del linguaggio Assembly