----------> Furb3T <----------
presenta:
Facciamo un p≥ di ReveRsinG !!!
Salve miei fedeli lettori, la lezione di oggi riguarda il ReversinG; non sapete ancora cosa vuol dire? C'Φ una sola cosa da fare: CONTINUATE A LEGGERE.
Il programma che utilizzer≥ oggi Φ Applet Botton Factory 4.0, un grazioso prg che serve per costruire applet java per creare bottoni. Il tool di turno per analizzare il prg indovinate qual Φ? Softice come al solito. Partiamo, lanciate il programma e comparirα subito una NAG nella quale ci sono 2 bottoni: OK e REGISTER. Premete REGISTER e vi apparirα un form per la registrazione del prg. Notiamo subito che bisogna inserire 2 campi, fatelo e poi prima di premere il tasto Register entrate in Softice con Ctrl-D, fissate un BPX HMEMCPY e poi ritornate con F5. Ora premete il tasto Register e....Voilα eccovi dentro Softice, premete F12 circa 7/8 volte almeno fino a quando non sarete all'interno del prg e poi andate avanti con F10 fino ad arrivare a questo punto:
:0046F0F8
mov eax, dword ptr [ebp-04] ----> scrivete d eax
comparirα il nome inserito
:0046F0FB call 00403F68
----> controlla che il campo non sia vuoto
:0046F100 mov edx, 0046F1F0 ----->
fate d 0046F1F0 compare un stringa, ma cosa Φ?
:0046F105 call 00408DA4
-----> per capire l'istruzione precedente, analizziamo questa call
:0046F10A test eax, eax
:0046F10C jne 0046F1C2
Ok, quando siamo sulla Call che ci interessa, facciamo un bel TRaceIN con F8, avremo:
.....................
---------> a noi interessa da questo punto in poi
:00408DB9 repz
:00408DBA cmpsb
:00408DBB je 00408DE1
:00408DBD mov al, byte ptr [esi-01] ----> in al verranno messe una ad una le lettere del nostro nome
:00408DC0 cmp al, 61
-----> viene comparato al con 61
che corrisponde alla lettera a
:00408DC3 jb 00408DCD
:00408DC5 cmp al, 7A
-----> 7A corrisponde alla lettera z
:00408DC8 ja 00408DCD
:00408DCA sub al, 20
:00408DCD mov dl, byte ptr [edi-01] ----> muovo in dl le lettere di edi-01, ma edi-01 Φ la stringa
che
:00408DD0 cmp dl, 61
veniva caricata in EDX prima della call,
:00408DD3 jb 00408DDD
:00408DD5 cmp dl, 7A
:00408DD8 ja 00408DDD
:00408DDA sub dl, 20
:00408DDD sub eax, edx
-----> in EAX abbiamo il cod Hex delle lettere che compongono il
nome
:00408DDF je 00408DB9
inserito da noi, in EDX il cod Hex delle
lettere che compongono la
stringa
che abbiamo trovato, e dato che il JE dell'istruzione successiva fa ripetere il loop vuol
dire che quella stringa Φ il vero codice.
Bene, ora che abbiamo il primo codice dobbiamo trovare il secondo, ed Φ facilissimo!!!! disabilitate il BPX con BD *, e premiamo F5, inseriamo nel primo campo il codice vero, ritornate su Softice, riabilitate il BPX con BE *, ritornate nel prg con F5 e premete Register, eccovi di nuovo in Softice. Vai con F12 e poi con F10 fino ad arrivare qui:
:0046F120 mov eax,
dword ptr [ebp-04]
----> d EAX ed ecco il secondo codice che avete scritto
:0046F123 call 00403F68
-----> verifica che il campo non sia vuoto
:0046F128 mov edx, 0046F1F8
-----> viene messo in EDX una strana stringa
:0046F12D call 00408DA4
------> ma questa Φ la call di prima che fa il controllo, quindi ci≥ vuol
:0046F132 test eax, eax
dire che la stringa in edx Φ il secondo vero codice
:0046F134 jne 0046F1C2
Disabilitate il BPX con BD * premete F5, inserite il secondo codice vero, premete Register e .....WOW il vs prg ora Φ perfettamente registrato senza aver modificato nessuna istruzione. Ebbene il ReversinG Φ proprio questo, individuare quello che vuole il prg e darglielo senza modificare nulla, in questo modo siete sicuri che tutto funzionerα bene visto che quelli sono i codici che erano stati previsti dai programmatori.
Bene la lezione e terminata, e ci vediamo alla prossima puntata.
Ringraziamenti: A tutti gli amici di RingZer0 e ad Ins perchΦ continua a pubblicare i miei tutorials.