Corso UIC Avanzato 01 Unlock
From UIC
UIC Avanzato 01 Unlock
Contents |
| Infos | |
|---|---|
| Author: | Unlock |
| Email: | |
| Website: | Home page |
| Date: | 01/09/1999 (dd/mm/yyyy) |
| Level: |
|
| Language: | Italian |
| Comments: | |
Tools
SoftIce ver 4.00 (le versione non è importante)
Link e Riferimenti
Questo è il Corsi UIC Avanzati n°01 disponibile alla pagina Corsi per Studenti
Introduzione
Partiamo con questa prima lezione di UIC sperando che chi è alle prime armi non si scoraggi :))))))
Notizie sul Programma
È la prima lezione della UIC
Essay
1) Avviamo il programma uno.exe, ci chiederà due info per poterlo registrare 2) Inseriamo quello che vogliamo nelle due caselle 3) Clicchiamo il tasto "REGISTER", il programma da un messaggio di errata registrazione
Sappiamo che Windows legge le informazioni da noi inserite nelle caselle con la funzione GETWINDOWTEXTA. Premiamo Ctrl+D e saremo in SoftICE, inseriamo un breakpoint proprio alla chiamata della funzione GETWINDOWTEXTA scrivendo bpx GETWINDOWTEXTA e premendo enter, ora ripremiamo Ctrl+D per ritornare a windows. Ripetiamo i punti da 1 a 3. Al momento dell'esecuzione del punto 3 il breakpoint viene eseguito, premiamo il tasto F12 (che serve a ritornare all' istruzione successiva alla chiamata della funzione GETWINDOWTEXTA) e ci troveremo il seguente codice
0040120A MOV EAX,00402165
0040120F PUSH 08
00401211 PUSH 00402169
00401216 PUSH DWORD PTR [00402088]
0040121C CALL USER32!GETWINDOWTEXTA
00401221 MOV EBX, 00402169
00401226 MOV EDX, EAX
00401228 XOR ECX, ECX
In questo punto il programma legge le informazioni e le memorizza in aree di memoria. Proseguiamo nel DEBUG del programma con il tasto F 10 e troveremo il seguente codice:
00401230 ADD AL, 12
00401232 XOR AL, CL
00401234 ADD AL, 15
00401236 ADD AL, 02
00401238 MOV EBX, 00402169
0040123D MOV AH, [ECX+EBX]
00401240 CMP AL, AH
00401242 JNZ 00401311 *************
00401248 INC ECX
00401249 INC EAX
0040124A CMP ECX, 03
0040124D JNZ 0040122A
In questo codice vengono prelevati i caratteri da noi inseriti, e memorizzati dal programma nell'area di memoria 00402165 (corrispondente alla prima casella bianca) e confrontati con quelli memorizzati nell'area di memoria 00402169 (corrispondente alla seconda casella bianca). Teoricamente da questo confronto si potrebbe trovare la chiave esatta e quindi inserirla senza modificare il codice del programma; in realtà il calcolo della chiave genera dei simboli strani quindi è più semplice modificare il codice del programma. Il salto condizionato da modificare è quello nella locazione di memoria 00401242 JNZ 00401311, per fare questo in SoftICE scrivere: A [spazio] 016F: 00401242 e premere enter. In questo modo SoftICE ci permette di cambiare il codice e quindi possiamo trasformare JNZ in JZ, si fa questo perché l' istruzione CMP AL,AH setta un flag a 1 se il confronto non è corretto, che è il nostro caso poiché abbiamo inserito una "fesseria"! Questa piccola routine viene eseguita per tre volte dopo di che si ha un altro controllo, questo lo possiamo notare premendo sempre il tasto F 10 (dopo avere modificato il salto).
004012AF XOR AL, 16
004012B1 ADD AL, 45
004012B3 ADD AL, CL
004012B5 XOR AL, CL
004012B7 MOV BL, [ECX+00402169]
004012BD CMP AL,BL]
004012BF JNZ 00401311 *************
004012C1 INC ECX
004012C2 CMP ECX, 08
004012C5 JNZ 004012A9
Questo codice ripete il controllo di un altro pezzo di chiave di registrazione per 5 volte quindi c'è il solito confronto e il solito salto JNZ che andrà modificato come il precedente.
Dopo avere modificato anche questo salto proseguite di nuovo con il tasto F10 e apparirà il seguente codice:
0040130D CMP AL, 01
0040130F JZ 00401338
Se, quando arrivate sull' istruzione CALL, premete il tasto F 10 NON FATELO!!!, il programma vi dirà che la chiave da voi inserita è errata; quindi qui c'è un ulteriore controllo della chiave di reg. bisogna entrare nella routine e vedere cosa controlla; per fare ciò si preme il tasto F8. A questo punto si visualizzerà il seguente codice:
00401356 MOV EDX, EAX
00401358 XOR ECX, ECX
0040135A MOV AL, [ECX+00402165]
00401360 ADD AL, 12
00401362 XOR AL, CL
00401364 ADD AL, 15
00401366 ADD AL, 02
00401368 MOV AH, [ECX+00402169]
0040136E CMP AL, AH
00401370 JNZ 00401311 *************
00401372 INC ECX
00401373 INC EAX
00401374 CMP ECX, 03
00401377 JNZ 0040135A
00401379 MOV AL, [ECX+00402165
0040137F XOR AL, 16
00401381 ADD AL, 44
00401383 ADD AL, CL
00401385 XOR AL, CL
00401387 MOV AH, [ECX+ 00402169]
0040138D CMP AL, AH
0040138F JNZ 0040139B *************
00401391 INC ECX
00401392 CMP ECX, 8
00401395 JNZ 00401379
00401397 MOV AL, 01
00401399 JMP 0040139F
0040139B MOV AL, 00
0040139D JMP 0040139F
Questo codice ricontrolla quello che noi abbiamo inserito nelle caselle di registrazione e, se il controllo è corretto, inserisce in AL il numero 01 se no mette 00. Anche qui noi dobbiamo fare credere al programma che i dati inseriti siano corretti, quindi dovremo modificare i salti contrassegnati dagli asterischi da JNZ a JZ con lo stesso metodo usato in precedenza. Scrivere in SoftICE A [SPAZIO] 016F : 00401370 e premere enter e 016F : 0040138F e premere enter.
Premere F5 in SoftICE per fare ripartire il programma et voilà!
Spero di essere stato abbastanza chiaro :)))) Unlock
Note Finali
Un rigraziamento a tutti gli amici di crack-it
Disclaimer
I documenti qui pubblicati sono da considerarsi pubblici e liberamente distribuibili, a patto che se ne citi la fonte di provenienza. Tutti i documenti presenti su queste pagine sono stati scritti esclusivamente a scopo di ricerca, nessuna di queste analisi è stata fatta per fini commerciali, o dietro alcun tipo di compenso. I documenti pubblicati presentano delle analisi puramente teoriche della struttura di un programma, in nessun caso il software è stato realmente disassemblato o modificato; ogni corrispondenza presente tra i documenti pubblicati e le istruzioni del software oggetto dell'analisi, è da ritenersi puramente casuale. Tutti i documenti vengono inviati in forma anonima ed automaticamente pubblicati, i diritti di tali opere appartengono esclusivamente al firmatario del documento (se presente), in nessun caso il gestore di questo sito, o del server su cui risiede, può essere ritenuto responsabile dei contenuti qui presenti, oltretutto il gestore del sito non è in grado di risalire all'identità del mittente dei documenti. Tutti i documenti ed i file di questo sito non presentano alcun tipo di garanzia, pertanto ne è sconsigliata a tutti la lettura o l'esecuzione, lo staff non si assume alcuna responsabilità per quanto riguarda l'uso improprio di tali documenti e/o file, è doveroso aggiungere che ogni riferimento a fatti cose o persone è da considerarsi PURAMENTE casuale. Tutti coloro che potrebbero ritenersi moralmente offesi dai contenuti di queste pagine, sono tenuti ad uscire immediatamente da questo sito.
Vogliamo inoltre ricordare che il Reverse Engineering è uno strumento tecnologico di grande potenza ed importanza, senza di esso non sarebbe possibile creare antivirus, scoprire funzioni malevoli e non dichiarate all'interno di un programma di pubblico utilizzo. Non sarebbe possibile scoprire, in assenza di un sistema sicuro per il controllo dell'integrità, se il "tal" programma è realmente quello che l'utente ha scelto di installare ed eseguire, né sarebbe possibile continuare lo sviluppo di quei programmi (o l'utilizzo di quelle periferiche) ritenuti obsoleti e non più supportati dalle fonti ufficiali.