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: |
|
| Language: | Italian |
| Comments: | |
Introduction
Please insert cd 1 in your drive!!!
Chi di voi non conoscono questa famigerata messagebox? È arrivato il momento di farla sparire!
Tools
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:
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:
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.