Nono Corso Newbies
(Unpacking for newbies)

Data

by "The Hellfish"

 

25/05/2001

UIC's Home Page

Published by Quequero

 

Che dire…Il tutorial più veloce del mondo :)

 

....

Home page se presente: http://www.thehellsite.com/

E-mail: johnes@freesurf.it

johnes su #crack-it

....

Difficoltà

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

 

In questo tutorial spiegherò come unpackare il Leim Crypt (e si chiama leim non per caso!!)


Nono Corso Newbies

Unpacking for newbies
Written by The Hellfish


Introduzione

Da introduzione posso dirvi solo che questo programmino by Andreageddon è un'ottima via per buttarsi a unpackare i vari crypter.

Tools usati

Softice e Symbol Loader

PEditor

Hiew

URL o FTP del programma

http://www.spippolatori.com/uic

Notizie sul programma

Dunque il target è semplice, far venire fuori la "good guy" premendo register... piccolo problema però: è cryptato!  

Essay

Allora prendiamo il nostro programmino, e carichiamolo nel PEditor. Quando si ha il sospetto che un programma sia cryptato basta andare a vedere le sezioni (Sections), se c'è qualcosa di strano... è cryptato! :) Nel nostro NONO.exe abbiamo una sezione anomala (Geddone!) che contiene il codice di decrypting del programma: il programma infatti ha l'entry point all'inizio di questa sezione. Una volta eseguito il decrypting il programma andrà nella sezione TEXT e continuerà normalmente. Il nostro scopo è quello di avere un exe tale e quale all'originale ma decryptato. Per far questo eseguiamo NONO.exe, apriamo il PEditor, andiamo su Task, selezioniamo NONO.exe e facciamo Dump Full, il PEditor provvederà a salvare su disco l'exe decryptato e ad allineare le sezioni. Bene ora abbiamo salvato su disco l'exe decryptato, eseguiamolo e... CRASH! Il geddone infatti si è preoccupato si fare impestare la IT dal loader (la sezione Geddone!). Dunque abbiamo una IT corrotta, vediamo di metterla a posto! Questa è la IT di NONO.exe:

Dll Name

OrigFirstThunk

TimeDate Stamp

Forwarder Chain

Name

FirstThunk

MFC42

00004074

00000000

00000000

0000442C

4258

MSVCRT

000041D8

00000000

00000000

00004462

43BC

KERNEL32

00004064

00000000

00000000

00004560

4248

USER32

00004220

00000000

00000000

000045F4

4404

E questa la IT di DUMPED.exe:

Dll Name

OrigFirstThunk

TimeDate Stamp

Forwarder Chain

Name

FirstThunk

MZ

00000000

36F80F55

00000000

00000000

4258

MSVCRT

000041D8

36B69D5D

78000000

00004462

43BC

KERNEL32

00004064

371FC2B3

BFF70000

00004560

4248

USER32

00004220

37456CEB

BFF50000

000045F4

4404

Come possiamo vedere la prima dll è sbagliata perciò dobbiamo correggere l'Original First Thunk e il Name. Apriamo Hiew e andiamo a 4000, che sarebbe l'indirizzo della IT (dal PEditor avete tutte le informazioni che vi servono e potete calcolarvi gli offset usando il FLC). A questo punto abbiamo una serie di dword, ognuna di esse corrisponde ad un descrittore, le ultime 5, che sono null, indicano la fine della IT. Noi ci piazzeremo sulla prima dword e ci scriveremo 74 40 00 00 (notazione Intel!!), poi andremo sulla quarta e ci scriveremo 2C 44 00 00. Ora la funzione è tornata a posto però dobbiamo fare un'ultima modifica. Per fare in modo che il programma si calcoli ad ogni esecuzione gli entry point delle dll importate dovremo azzerare il TimeDate Stamp e il Forwarder Chain di ogni dll, quindi scriveremo in ogni dword corrispondente 00 00 00 00. La IT ora è perfetta! Avviamo il programma... azz, nn funziona ancora! La spiegazione è semplice: il programma ha l'entry point che punta ancora alla sezione Geddone! e noi vogliamo che punti alla sezione TEXT in modo da evitare la routine di decrypting sull'exe gia decryptato. Come facciamo a sapere l'entry point originale? Carichiamo NONO.exe nel symbol loader, steppiamo, steppiamo fino a quando non si arriva qui:

00407136   jmp eax  ---> in eax c'è l'indirizzo 4017D0

Il programma a questo punto dopo aver eseguito il decrypting salterà all'entry point originale, continuando il suo normale corso. Annotiamoci l'indirizzo 4017D0, apriamo Dumped.exe nel PEditor e cambiamo l'entry point da 7001 (entry point della sezione Geddone!) a 17D0 (entry point della sezione TEXT), clicchiamo su Apply Changes ed il gioco è fatto! Il programma ora è decryptato e perfettamente funzionante. Ora non ci rimane che far venire fuori la messagebox giusta. BPX messageboxA e clicchiamo su register, usciamo dalla MFC42 e arriviamo qui:

00401500 CMP DWORD PTR [00403020],01 
00401507 JNZ 0040151B
---> jmp condizionato
00401509 PUSH 10 
0040150B PUSH 00403088 
00401510 PUSH 00403074 
00401515 CALL 00401762
---> bad guy
0040151A RET 
0040151B PUSH 40 
0040151D PUSH 00403064 
00401522 PUSH 00403024 
00401527 CALL 00401762
---> good guy
0040152C RET 

Andate  con Hiew a 1507, invertite il jmp e avete finito!

                                                                                                 The Hellfish 2001

Note finali

Vorrei ringraziare innanzitutto Andreageddon per questo ottimo corso! Un saluto va poi al mio fratellone virtuale Bieco, un saluto a Para, Dibbo, Que e tutti gli altri di #crack-it! Ciauzzzzzzzzzzzzzzzzzzzzz

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 immane che ogni singolo programmatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili.

Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly.

Capitoooooooo????? Bhè credo di si ;))))