IrfanView 3.9.2
|
||
Data |
by "DEATH_REAVER" |
|
09/01/05 |
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 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
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 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!!
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.