---------->  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.