Zoom Icon

Corso UIC Avanzato 01 Ritz

From UIC Archive

UIC Avanzato 01 Ritz

Contents


Corso UIC Avanzato 01 Ritz
Author: Ritz
Email: [email protected]
Website: Home page
Date:

31/08/1999 (dd/mm/yyyy)

Level: Working brain required
Language: Italian Flag Italian.gif
Comments:



Tools

Uno soltanto: il caro SoftIce 3.24.


Link e Riferimenti

Questo è il Corsi UIC Avanzati n°01 disponibile alla pagina Corsi per Studenti


Introduzione

Dunque dunque, che dire, in questo tute cercherò semplicemente di spiegare come ho fatto a crackare il primo esame della UIC :)).

Ciao a tutti! Innanzi tutto non so come possa riuscire questo tute, in quanto l'ho scritto in una decina di minuti il giorno 31 agosto... quindi spero ci capiate qualcosa. Erm, poi che dire, esso è la soluzione del 1° esame UIC fatto dal nostro caro Quequero ;)). Volevo chiamarlo prof. ma so che si arrabbia... :)))). Che gentile :p


Notizie sul Programma

Questo prog. costituisce il primo degli esami UIC: è da crackare e basta: serve solo per imparare a usare il Sice (almeno penso vero Que?). Bhè si + o -, è ovvio che gli altri loschi scopi non ve li posso raccontare :)


Essay

Dunque dunque... pronti? VIAAAA!!! Vediamo un po' cosa ha combinato Que... :)))

Avviate il programma, vi appariranno 2 campi: inseriteli tutti e due, poi premete OK: vi apparirà un messaggio d'errore: "Serial errato, ritenta!!!"

Cheddire, let's crack it!! Sennò Que perché l'avrebbe fatto? :)

Allora, innanzi tutto aprite il SoftIce con CTRL+D e settate un bpx su getwindowtexta. Chiudete il Sice e ripremete OK. Ecco che ora popperete nel vosto debugger. Uscite con CTRL+D (in questo momento il prog. sta leggendo il nome, non il serial, cosa che a noi non interessa) e ripopperete nell'Ice. Premete F11 per entrare nel codice del prog., ed eccovi attraccati qui:

0040121C CALL USER32!GetWindowTextA 00401221 MOV EBX,00402169 00401226 MOV EDX,EAX 00401228 XOR ECX,ECX 0040122A MOV AL,[ECX+00402165] 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 // Seguono varie righe di codice che si riveleranno inutili 00401311 MOV EAX,00402165 00401316 ADD EAX,2D 00401319 XOR EAX,0F 0040131C MOV EBX,EAX 0040131E XOR EAX,EAX 00401320 PUSH 10 00401322 PUSH 0040208C 00401327 PUSH 00402000 0040132C PUSH 00 0040132E CALL USER32! MessageBoxA 00401333 JMP 0040115C 00401338 PUSH 20 0040133A PUSH 004020E1 0040133F PUSH 00402066 00401344 PUSH 00 00401346 CALL USER32!MessageBoxA 0040134B JMP 00402169 00401350 RET

Analizziamo la situaizone: in :00401242 c'è un jnz che salta a :00401311: provate, da dove siete attraccati, a steppare con F10 e vedrete che proprio quel jump viene eseguito: continuando a fare ancora step, vi ritroverete davanti la schermata d'errore: infatti, il jnz situato in :00401242 porta proprio al codice della beggar off. Vabbè... ora uscite dal Sice con CTRL+D: sappiamo un po' più di cose. Senza eliminare il breakpoint, cliccate di nuovo su OK: entrerete nel debugger. Usciteci e ci ripopperete. È arrivato il momento di agire: esaminiamo ancora la situazione. Steppate fino a trovarvi in :00401240. Lì c'è il cmp che poi genera il salto. Provate a visualizzare i registri ah ed al: fate prima "? ah" e poi "? al" (tutto senza virgolette). Si può notare che sono COMPLETAMENTE diversi, e che nessuno di essi è collegato il qualche modo al seriale (provate a cambiare il serial number e riosservateli: non cambia nulla); ma allora? Che significa? Semplice, che i valori di ah e al non potranno MAI essere uguali in quanto vengono generati con algoritmi che non prendono nemmeno in considerazione il numeretto da noi inserito, qualunque esso sia, e di conseguenza il salto avverrà sempre e cmq. Quindi che si fa?

Bhè questo non è esatto dal momento che se guardate bene vedrete che AL in realtà contiene la prima lettera del vostro nick opportunatamente modificata, cioè le viene addato 12h, viene poi xorata con CL che nel primo loop vale 0 nel secondo 1 e così via, le viene poi addato 15h poi 2h e poi viene confrontata con il primo carattere del seriale, se come primo numero inserivate il carattere ASCII che viene fuori da questa routine allora non sarebbe saltato, ma come alcuni di voi hanno scritto non è questo il problema NdQue

Osservate l'indirizzo :00401338. Esso porta diritto a una nuova MessageBox. Potrebbe mai essere quella del codice "esatto"? Mah, proviamo, perché no? Bisogna quindi cambiare l'indirizzo a cui il jnz si riferisce. Scrivete "a 401242" per modificare l'istruzione, e poi jnz 401338: in questo modo salta alla routine della messagebox. Chiudete il Sice con CTRL+D e... sììììììììì... "Serial esatto... Bravo!!!". Perfetto, programmillo crackato. Facile no?

Riassumendo, Que si è divertito :) a farci uno scherzetto: il serial in questo prog non serve a nulla, e quindi non ha senso cambiare vari jne in je quando basta cambiare radicalmente una sola istruzione.

Mission passed (almeno spero :)).

Come Volevasi Dimostrare.

ZeE yOu ZoOn.

Ciauzzzzzzzzzzzzzzzzzzz

Ritz


Note Finali

Dunque, chi posso ringraziare? Beh prima di tutto ci va sempre lui, il mitico QUEQUEROOOO, sempre moolto disponibile e pronto ad aiutarmi, anche perché senza di lui noi cosa avremmo tentato di crackare? Que sei semplicemente un mitooooooo!!!! :)) Heheh grazie :)))NdQue

Un saluto naturalmente va a tutti i miei compagni di calsse (che non so precisamente chi siano :))), e specialmente BlackDruid, cod (il quale ha anche tentato di corrompermi, vero cod? :)) e BoBo, in quanto gli altri non li ho mai visti su IRC :((; saluto anche tutto il chan #crack-it ([aLT255], ^courier, sPEzio, ecc...), tutti i Ring0 e... basta, penso di aver finito. Ah, no!! manca la cosa più importante! Saluto l'iguana di Quequero. :) Che bello, è così felice che sta scodinzolando....Mmm se scodinzola un altro po' mi frantuma la spalla... ;))))NdQue


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