Cracking di Caesar 3, Quake 3 e KingPin
CD-Checks idioti


26/12/99

by "AndreaGeddon "

 

 

UIC's Home Page

Published by Quequero



Ecco il primo (credo) tutorial sulle protezioni dei cd...grazie Andrea

 
UIC's form
Home page: www.andreageddon.8m.com
E-mail: [email protected]
UIC's form

Difficolt�

(x)NewBies ( )Intermedio ( )Avanzato ( )Master

 

Eccovi tre tute in uno. Il cracking di tre CD-check. Questo tutorial � abbastanza facile, basta usare un p� la testa.


Cracking di Caesar 3, Quake 3 e KingPin
CD-Checks idioti

Written by AndreaGeddon

Introduzione

Dopo aver visto che razza di cd-check ci sono, posso dire: "Amici, c'� una sola parola per tutto questo: IDIOZIA" (se mi passate la citazione... hihihi)

Tools usati

-  Solo WDASM.

Eh gi�, vi ho detto che sono degli idioti.

 

URL o FTP del programma

In rete non ci sono, perch� occupano troppo.

Notizie sul programma 

Quake 3 Arena: cd-check singolo

Caesar 3: Cd-check singolo (qui sono andato un p� a culo)

KingPin: cd-check in quattro punti, ma praticamente identici

Essay

Che razza di protezione � una protezione che si pu� sconfiggere addirittura senza l'uso del debugger!!!

Il caro Wdasm basta e avanza in questi casi. Iniziamo dal pi� facile dei tre: KingPin.

IL CRACKING DI KINGPIN 1.0 (inglese)

Che dire... vabb� inziamo. Allora, lasciate stare subito le API e tutto il resto. Come si fa a fregare questa protezione? Col pi� classico dei metodi! Fate partire il gioco e vi dar� una messagebox con il testo di errore. Segnatevi il testo e andiamo in Wdasm. Cerchiamo la string reference che contiene l'errore che ci siamo segnati, e voil� troveremo quattro riferimenti nel codice.

Un riferimento sta all'inizio, e gli altri tre stanno alla fine. Se date un'occhiata veloce, vedrete che prima dei queste string reference (intendo la riga prima!) ci sono dei jump, che guardacaso fanno saltare le string reference. Non ho pi� il prog, quindi vi scrivo un paio di indirizzi e byte riesumati dai miei appunti:

 

1�)-------------------------------------
83F84A
7605
83F864
0040161E 720F ---> JB

2�)-------------------------------------
56
E84AFFFFFF
8BF0
00442031 85F6
750E ---> JNE

3�)-------------------------------------
E881FEFFFF
85C0
00442051 750E ---> JNE
68C8414500

4�)-------------------------------------
83C404
85C0
5E
0044206D 750E ---> JNE
68C8414500

 

Bene, avrete gi� capito a questo punto che basta fare in modo che i jump saltino sempre, ed il gioco � fatto. Praticamente li dovete sostituire rispettivamente con EB0F, EB0E, EB0E, EB0E. Tutto qui.

 

IL CRACKING DI QUAKE III ARENA v.1.0 (inglese)

Beh, questo cd.check sarebbe potuto essere abbastanza difficile, se solo i programmatori non fossero stati dei completi coglioni!!!

Allora, devo dire che all'inizio mi ero pure spaventato. Infatti mi metto l�, carico il gioco, e parte. Stai a vedere che non c'� il CD-Check? Arrivo al men� principale... metto Single Player e va... provo a selezionare Fight (o anche skirmish), e il programma inizia a caricare l'arena, ma si blocca e mi appare una messagebox ovale che dice: Insert the cd?  Yes/no?. Cavolo. Beh, segnatevi l'errore e andiamo subito in wdasm.

Apriamo il dialog con tutte le string reference.... miiinchia, ci mette mezz'ora! Ci sono un bordello di stringhe. Ci metto un bel p� a scorrermele tutte per cercare qualcosa che mi interessa. Allora via le strng reference, andiamo sul men� SEARCH -> Find Text e cerco INSERT (parola che compariva nel messaggio di errore). Cerca cerca... niente. Eh gi�, mica la vita � tutta tette e latte! A questo punto stavo gi� iniziando a pensare a funzioni proprietarie, a codice nascosto in qualche dll, quando per scrupolo un attimo prima di chiudere il Wdasm il mio cervello ha tirato le sciacquone e mi � balenata un'idea! Cerchiamo la stringa CD, magari trovo qualcosa... Bene, vi conviene fare FindText di " CD " (intendo "spazio-C-D-spazio" altrimenti troverete ogni valore hex che contiene CD). Faccio cerca... ECCHETTIVADOATROVA'???? una string reference che si chiama: Game CD not in drive !!! Toh, la riga prima di sta reference c� un salto che salta la reference!!!!! Chiss� che devo fare m�??? Basta fare in modo che quel salto salti sempre, e il gioco � fatto!

Ecco il codice:

 

0042DFC2      test         eax, eax

0042DFC4      jne          0042DFD5

* Possible stringData Ref from Data Obj   ->"Game CD not in drive"

0042DFC6      push        004BE380

0042DFCB      push        00000003

0042DFCD     call           0041A0A0

0042DFD2      add          esp, 00000008

* Referenced by a Conditional jump at address:

| 0042DFBB       0042DFC4

 

anche qui � evidente che alla riga 0042DFC4 basta fare in modo che il jne diventi jump, ed il gioco � fatto. Ora voglio dire: ma caaaazzoo, ci volevo tanto invece che a scrivere "game cd not in drive" inventarsi qualcosa tipo: "errore di allocazione", oppure "overflow interno", una qualsiasi cazzata che sarebbe rimasta inosservata! Mah... e poi si lamentano della pirateria! Ma vaffanculo! Se non sanno usare l cervello che stessero a casa!

 

IL CRACKING DI CAESAR III v.1   (italiano)

Beh, qui sono andato un  p� pi� a culo. Anche qui, lancio il gioco, e mi appare il messagebox con: "Inserisci il Cd di caesar3 nel lettore....". Okay, mi segno sto errore e vado nel wdasm. Apro il file, lo disassemblo, cerco la reference all'errore che mi sono scritto... niente. Va beh, mica � sempre natale! Visto il culo con quake3, provo a cercare la stringa " cd ", ma anche qui niente. Uhmm. Non avevo caricato il SoftIce e non avevo voglia di riavviare tutto per caricarlo. Cos� sono rimasto a guardare il codice. Poi ho pensato che forse l'API messageboxa mi sarebbe potuta esser di aiuto, visto che il messaggio di errore era proprio una messagebox. Cos� cerco l'API e... tadaaaa. Ci sono solo tre reference a messageboxa. Potrei capire subito quale � quella giusta col softice, ma io sono pigro e non voglio muovermi, cos� esamino meglio ste reference vedendo se posso capire quale � quella giusta (beh, comunque siamo sempre nel campo delle ipotesi, perch� non sappiamo se effettivamente la messagebox c'entra qualcosa). Vedo che la terza reference, quella in fondo al codice, alla riga 00529036, non ci serve, perch� � tra le solite righe che ci sono in ogni eseguibile (mi sa che servono a definire le import... bohh.. comunque non c'entra). Ne rimangono due. Andiamo a vedere queste due. Andiamo alla prima. La troviamo alla riga 0041964E. Non vi rimetto tutto il codice perch� sarebbe troppo lungo. Allora, vediamo questa reference alla messagebox. Se procedo un p� pi� s� nel codice, mi trovo di fronte ad una cosa strana... alla riga:

 

0041961B     JUMP       00419679

 

questo vuol dire che salta sempre la messagebox. Inoltre non c'� riferimento ad altri jump che saltino alla messagebox. Quindi mi viene da pensare che questa fottuta messagebox non viene mai eseguita. Bohh. Comunque, per forza di cose adesso � rimasta SOLO la seconda reference a messagebox.

La trovo alla riga 00527900. Beh, risalendo un p� pi� su il codice, questo sembra pi� normale. Allora, basta risalire poche righe per trovarci di fronte a:

 

005278C7    7409                       je    005278D2
005278C9    E89CAAEDFF    call   0040236A

005278CE    85C0                    test    eax, eax

005278D0    754F                     jne     00527921

 

bene. Alla riga 005278C7 se esguo il salto mi porta ad eseguire per forza la message box. Allora lo noppo. Alla riga 004278D0 se non eseguo il salto mi ritrovo ancora a dover esguire la messagebox. Allora lo trasformo in jump. Adesso patcho il programma e se lo eseguo... niente pi� richiesta di CD. Il gioco funziona perfettamente! Beh, qui sono andato molto a culo, per� non trovo che come protezione sia tutto sto granch�!

AndreaGeddon

Note Finali

Saluto tutti gli amici della mailing list (ma proprio tutti!!!!), e un grazie a cod per il materiale che mi ha mandato!

Disclaimer

Queste informazioni sono solo a scopo puramente didattico.

 
UIC's page of reverse engineering, scegli dove andare:

Home   Anonimato   Assembly    CrackMe   ContactMe   Forum       
    Iscrizione   Lezioni    Links   NewBies   News   Playstation        
  Tools   Tutorial   Search   UIC Faq

UIC