Zoom Icon

CD-check

From UIC

No one lives forever cd-check

Contents


Infos
Author: §-Death_Reaver-§
Email: death.reaver@leonardo.it
Website: deathreaver.altervista.org
Date: 01/08/2003 (dd/mm/yyyy)
Level: Working brain required
Language: Italian Image:Flag_Italian.gif
Comments:



Introduction

Please insert cd 1 in your drive!!!

Chi di voi non conoscono questa famigerata messagebox? È arrivato il momento di farla sparire!


Tools

Ollydbg

un qualsiasi editor esadecimale


Essay

Cominciamo aprendo il file NOLF.exe con OllyDBG e mettiamo un BreakPoint su GetDriveTypeA. Attenzione: per mettere questo breakpoint usate la command-line, richiamabile con ALT+F1 ricordando che Olly è case-sensitive

Olly metterà i freni all’ istruzione all’indirizzo 004012DA:

004012D9: push ecx //salva il parametro RootPathName(lettara di identificazione del Drive

004012DA: call GetDriveTypeA //dovrebbe essere chiaro…. E naturale

004012E0: cmp eax,00000005 //siccome che GetDriveTypeA è una funzione che restituisce un

valore(in eax), viene confrontato con 5 (valore lettore cd)

004012E3: jnz XXXXX //non mi ricordo l’indirizzo! In ogni caso salta se (vedi sopra) eax non è uguale a 5

Lo stesso controllo viene eseguito qualche riga sotto (premi PAGGIù)

Ora si dovrebbe si dovrebbe noppare i salti dei due controlli (doppio click sul’istruzione e scrivere nop) ma provando il cracking non riesce

E che c’è successo??

CTRL+ F2 e si riparte da zero.

Controllando le istruzioni dopo le chiamate a GetDriveTypeA ci sono chiamate sospette:

00401307: call 004011D0

….

004013A7: call 004011D0

E cosa si vede qualche riga dopo nella parte dei commenti? OpenFile.

A che serve un OpenFile senza ReadFile e WriteFile?

Mettendo un breakpoint su OpenFile (basta premere F2 mente ci si è sopra)

Avviato il programma si vede (sempre nell’area dei commenti) che il programma cerca i due file principali (NOLF.rez e NOLF2.rez) su un lettore cd (E:\......)

Ma io quei file ce l’ho sull’Hardisk!

Quindi si è aggiunto un obiettivo: eliminare la ricerca del file.

Per questo inoltre a noppare i due salti dovremo noppare anche le due chiamate a 004011D0. Segnatevi gli indirizzi e gli opcodes e chiudete.

Ora il colpo di grazia:

FASE 1:

come prima cosa dobbiamo ricavarci gli offset(usate PEditor o per i più pigri WinDasm, per quelli che non c’hanno nemmeno voglia di fa doppio click sull’icona ve li dico io:


-----Indirizzo-----------------------opcode----------------------offset---------------------

004012E3 75 3F 12E3

00401307 E8 C4 FE FF FF 1307

00401383 75 39 1383

004013A7 E8 24 FE FF FF 13A7

FASE 2:

Ora aprite HexWorkShop (o un qualsiasi editor esadecimale) andate su edit e selezionate “goto” e inserite gli offset (una alla volta). Es. mettendo 12E3 HexWorkShop vi catapulterà alla zona corrispondente (gli opcode sono gli stessi)

Adesso sostituite gli opcode con 90 (nop)

Quindi a 12E3 inserirete 2 nop (2 byte) ogni nop vale 1 byte!!!

Mentre a 1307 ne inserirò 5

Ora potete giocare senza toccare il tasto di aperture lettore cd.

Victory!


Note Finali

Un GRAZIE a:

Alla mia UIC (così non devo scrivere diecimila nomi) e alla MailingList



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.