|
Cracking
di Caesar 3, Quake 3 e KingPin |
| |
|
26/12/99 |
by "AndreaGeddon " |
|
|
|
Published by Quequero | |
|
Ecco il primo (credo) tutorial sulle protezioni dei cd...grazie Andrea |
||
| UIC's form |
|
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.
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 |
Home Anonimato
Assembly
CrackMe
ContactMe
Forum
Iscrizione
Lezioni
Links
NewBies
News
Playstation
Tools
Tutorial
Search UIC
Faq