|
- Carmageddon 2 Carpocalypse now
- (C-Dilla Cracking)
|
|
03-04-2000 |
by " cod " |
|
|
UIC's Home Page |
Published by Quequero |
E' legale mettere sotto l'auto un passante ? |
- Que fai abuso di potere in questo box!!
- Dhe hi hi, i commenti che voi mi lasciate spesso sono i più
belli :).....Cmq questo è un ottimo tutorial, molto completo su come malmenare SafeDisk
(Xoanon, non ti arrabierai mica?...Lui sa perchè) un'ottima protezione che cmq senza cd
originale resta QUASI impossibile da crackare :)....Bravo cod
-
|
No .. sembra proprio di no... peccato |
UIC's form |
- E-mail: [email protected]
- IRCNet: cod - Chan #crack-it #cdrita
|
UIC's form |
Difficoltà
|
(
)NewBies (x)Intermedio ( )Avanzato ( )Master |
|
Un modo semplice semplice per togliere dalle scatole una vecchia versione di C-Dilla,
che con qualche correzione può essere riadattata alle nuove versioni!
- Carmageddon 2 Carpocalypse now
C-Dilla Cracking
- Written by cod
- Come crackare una vecchia versione del SafeDISC avendo il CD originale, il crack
generico dei Laxity oppure una copia fatta con il famigerato CloneCD (quanto lo odio!!!!!
IO LO ODIOOOOOOOOOOOO). Io lo amo......diooooo quanto lo
amoooooooooooooo NdQuequero Se non avete il CD originale è meglio lasciare
stare... al momento vi descrivo la procedura se avete uno dei requisiti
sopradescritti..... perchè senza il cd originale o senza i mezzi descritti la cosa
diventa un pò difficile!! Quequero ne sa qualcosa..... (o il suo cervello ? :)). Da quel giorno è diventato tutto buchi :) NdQue
- Inoltre è necessaria una discreta conoscenza del formato PE (il formato degli
eseguibili!).
- HIEW 6.10 - Il solito ma indispensabile editor.... io uso
questo, voi il vostro preferito
- SoftICE 3.xx - Il debugger.... immagino che non ci sia
bisogno di presentazioni
- SUPWRITE - Io uso questa utility di Pedro/Laxity, voi se usate un'altro editor ne
potrete fare a meno. Serve per sostituire frammenti di dati importandoli da altri file. Se
usate HexWorkshop utilizzate le opzioni del programma....
- Win Disassembler 8.93 - L'unica cosa che ci aiuta di questo
programma è il fatto che permette di salvare il codice in un file di testo. Avrete
occasione di capirlo.
- FrogsICE 0.4x - SafeDisc fa una marea di check... quindi il
FrogsICE ci toglie da questo grave impiccio.
- iCEDUMP per SoftICE - La versione 5 o successiva..
preferisco la 5 perchè non devo caricarlo ogni volta io! Quando
crackai sta protezione gettai subito icedump perchè mi faceva una marea di casini NdQue
- Una stampante!! Possibilmente ad aghi :) Le stampanti a getto di inchiostro sono
sprecate per quello che dobbiamo fare! Non ve lo sareste mai aspettato! Una stampante per
crackare!! E come cracka bene!!! :)
- Qualcuno che vi aiuti nell'ultima sezione del cracking... non che sia indispensabile, ma
è meglio che dover leggere una tabella e fixare la IAT. L'aiutante detta e voi fixate! :)
Vi sbrigherete in un baleno!
- Da qualche automobilista incallito che ama i videogiochi e odia il codice della strada
.... dove altrimenti potreste trovare questo bel gioco ?
- Conoscete tutti la storia che si nasconde dietro a questo bel gioco... o no ?
Carmageddon, la 1. versione è stata censurata nel nostro paese, per l'eccessiva violenza
contenuta (ma va.... in Unreal ce ne sta pure di più e lo si vende liberamente!!) e per i
messaggi che trasmetteva ai giovani adolescenti (V.M. di 18 anni!). In cosa consiste
questo videogioco ? In una comunissima corsa tra automobili, in cui non importa chi vince
o chi perde, l'importante e giungere al traguardo con ogni mezzo... non esistono regole,
non esistono tracciati fissi da percorrere.... l'unica cosa importante è avere il tempo
di finire la corsa, e per avere più tempo investire pedoni, auto, animali o fare
acrobazie (e magari alla fine mozzare la testa a un uomo!) vi fornirà punti e tempo.
Questa è l'unica regola di Carmageddon. Credete che la stampa abbia fatto passare un
videogioco così sanguinario nel nostro paese ? NO! Gli autori sono stati costretti a
censurare il tutto, sostituendo uomini, donne e bambini con degli stupidi zombie e delle
mucche! E questa la cruda realtà... lavorare per poi vedere i propri sforzi
criticati da una massa di incompetenti! Ben vengano i videogiochi sanguinari.... crudeli,
dove l'importante è sopravvivere... almeno non vi viene la voglia di fare tutto ciò
nella realtà.... ma sia chiara una cosa.... NON PASSATE TUTTO IL VOSTRO TEMPO DAVANTI AL
COMPUTER! o davanti a una stupida consolle, altrimenti come avrete ben sentito finirete
come quei poveri ragazzi privi di una propria volontà.
- Come facciamo innanzitutto a capire che questo videogioco è protetto dal SafeDISC ?
Semplice.... basta tentare di duplicare il disco :) Troverete una marea di bad sector e
come se non bastasse nella principale del supporto troverete i seguenti file:
CLCD16.DLL, CLCD32.DLL, CLOKSPL.EXE, DPLAYERX.DLL, e file con estensione .ICD
accompagnati da file aventi lo stesso nome ma con estensione .EXE.
Innanzitutto installiamo il videogioco, volendo lo si potrebbe anche rippare, in quanto
carica tutte le piste sul disco fisso, ma questa è un'altra storia.... Avete un
masterizzatore ? Bene.... tentate di duplicare il disco e vedrete cosa vi dice :) Il disco
da voi inserito non è originale.... ma va lo sapevamo .... però volevamo sapere cosa ne
pensassi tu. Riavviamo col SoftICE caricato... gli riserviamo un'amara sorpresa al
giochino.... Riavviamo Carmageddon2 e questa volta ci dice che dobbiamo rimuovere il
debugger per poter continuare.... ma non è vero.. possiamo continuare facendogli credete
che il debugger non sia presente. Ora quanti trucchi esistono per identificare un debugger
(..... poi però si limita a controllare solo se ci sta SoftICE caricato....) e dire
all'utente che lo deve rimuovere ? Beh... se cercate sulla rete ne troverete un bel pò di
trucchi... partendo dalle protezioni anti-sice alle protezioni anti-debugging in generale.
Per ovviare a questo problema ricorreremo ad una delle utility che ho elencato in alto... FrogsICE. Molti di voi lo conosceranno.. è una ottima utility
anche se può essere rilevata anche la sua presenza e bloccare l'esecuzione... ma per
nostra fortuna non è il caso di SafeDISC... (SecuROM lo fa eccome! Solo che però si
scorda del debugger... poveri ignoranti!). Avviamo FrogsICE.. possibilmente se avete la
versione 0.43 è assai meglio... possiede l'opzione Blue Screen of Death accessibile col
tasto destro del mouse clickando sull'icona che permette di disabilitare il messaggio che
ci avvisa di una protezione anti-debugging.... Non fare per fare
pubblicità, ma se preferite usare delle altre versione di frogsice perchè ci sono
cose miglior, allora potete usare la mia vxd che trovate nella sezione tools che ha la
funzione blue screen of death disabilitata NdQue. Bene disabilitiamo questa
schermata... vi domanderete il perchè ? Semplice... se ve la scordate vedrete quanti
controlli vengono fatti!! Nelle ultimi versioni del SafeDISC questi controlli sono
aumentati in maniera a dir poco spaventosa! Comincio nel dire che io descriverò qui il
metodo per crackare uno dei due eseguibili presenti in questo videogioco.... ovvero
CARMA2_SW.EXE, dato che non possiedo una scheda video 3D eviterò di descrivere la
procedura per quel file... ma è identica al 100% dato che io stesso l'ho usata subito
dopo anche per l'altro eseguibile. Incominciamo con un editor esadecimale a dare
un'occhiata al file CARMA2_SW.ICD. Questo file è criptato... o meglio... tutte le sezioni
tranne .idata, la sezione che contiene la import table. Inoltre gli eseguibili di
Carmageddon2 non possiedono le risorse.. altrimenti nemmeno tale sezione sarebbe stata
criptata.
Sezione VirtSize
RVA
PhisSize
Offset
F L A G
.text
00181A9C 00001000
00181C00 00000400 60000020 * CODICE
.rdata 00005AF4
00183000 00005C00 00182000
40000040 * IAT
.data 0020D824
00189000 000E7000
00187C00 C0000040 * DATI
Original Entry Point 00173730 (RVA)
Image Base
00400000
- Per poter crackare questo videogioco ci serve una copia non crittata della sezione .text
e della sezione .data. Come facciamo ad ottenere una copia di queste sezioni ? Semplice :P
Col FrogsICE caricato, SoftICE caricato, carichiamo il videogioco... Il SafeDISC farà il
lavoro per noi... appena parte il videogioco.... appena lo schermo diventerà nero e il
lettore CD incomincia a leggere qualcosa... richiamiamo il SoftICE e battiamo sulla
consolle U 573730... cosa è questo valore? Chiediamo al SoftICE di mostrarci il codice
disassemblato della locazione 573730 che è l'entry point del programma in memoria (Image Base + Original Entry Point =
573730) Attenzione perchè questa operazione può essere fatta poche
volte, la foruma completa la trovate Qui NdQuequero.
Se vediamo codice al posto delle scritte INVALID settiamo un break point con 'bpx' su tale
locazione di memoria. Ora premiamo F5 e continuamo la normale esecuzione. Chiudiamo il
video gioco e ricarichiamolo. Questa volta appena il SafeDISC trasferirà il controllo al
gioco SoftICE brekkerà e noi incominceremo a lavorare! :) Dobbiamo salvare il codice su
disco fisso... qui ci viene in aiuto iCEDUMP, o il vostro dumper preferito. Battiamo il
comando PAGEIN D 401000 181A9C c:\text.bin e PAGEIN D 589000 E7000 c:\data.bin
- Cosa significa ? Chiediamo al nostro dumper di salvare la sezione text che ha inizio
all'RVA 1000 (+ imagebase = 401000) e che ha una lunghezza di 181A9C bytes (Virtual Size
.... guardate la tabella!) in un file sul disco fisso chiamato text.bin. Ora la stessa
cosa facciamo per la sezione data, ma questa volta salviamo la reale dimensione PhisSize,
dato che la VSize è leggermente più grande (2mb in confronto a neanche 800k di dati).
Ora abbiamo questi dati sul disco fisso... premiamo G e continuamo l'esecuzione.
Richiudiamo il programma e facciamo una copia del file .ICD assegnandogli un nome con
estensione .EXE ... CRACK.EXE fa al caso nostro :) Ora dobbiamo sostituire il codice
crittato con quello decrittato. Io ricorrerò a SupWrite, voi a quello che vi fa più
comodo... comunque la sintassi per me è la seguente:
-
- SUPWRITE c:\text.bin crack.exe 0x0 0x400 0x181a9c
- SUPWRITE c:\data.bin crack.exe 0x0 0x187c00 0xe7000
- cod, mi chiedo perchè non hai usato ADump che fa tutte ste cose
senza troppi casini :)
-
- Cosa significa ? Bene .. chiediamo a supwrite di aprire due file, l'origine e la
destinazione.... text.bin e data.bin come origine, crack.exe come destinazione. 0x0 è
l'offset iniziale nel file d'origine.. in questo caso 0 perchè a noi interessa tutto il
file. 0x400 e 0x187c00 sono gli offset della sezione .text e .data nel file di
destinazione (voce Offset nella tabella riportata in alto) mentre 0x181a9c è la quantità
di byte che noi abbiamo salvato di text.bin e 0xe7000 è la dimensione di data.bin. Ora ci
troviamo un file teoricamente funzionante al 100%. Proviamo ad avviarlo ? Provoca un
errore di pagina... per quale motivo? Ritorniamo al programma originale e stavolta quando
il SoftICE brekka sull'entry point tracciamolo per un pò di byte fino ad incontrare la
prima CALL. Vedrete che essa punta a una locazione di memoria.. che si viene a trovare
nell'IMPORT TABLE .. ovvero la sezione .rdata. Premiamo F8 e ci ritroviamo in una porzione
di codice in cui troviamo solo delle JMP DWORD KERNEL32!nomefunzione.... Diamo un'occhiata
alla IAT che si trova in memoria all'offset 00583000. Scriviamo alla consolle DD e poi D
583000. In questo modo abbiamo tutti i dati organizzati sotto forma di DWORD. Notiamo che
tra le prime punteranno a dei valori che hanno per inizio BF............ ok quelle
lasciamole stare.. puntano in una zona di memoria che il sistema operativo riserva ai
componenti principali (KERNEL32, USER32, ADVAPI32... chi ne ha ne metta!)... guardiamo un
pò più in giù e troviamo moltissime locazioni che puntano a 00Bxxxxx. Diamo un'occhiata
con U 00Bxxxxxx al primo di questi valori... Incontriamo la prima JMP DWORD di questa
tabella! Bene, incominciamo a stampare la tabella..... o se preferite scrivetela a mano
(buon divertimento!) continuamo a premere U e a stampare le pagine fino a che tale tabella
non finisce (per stampare bisogna specificare col comando PRINT nomeporta la porta dove è
connessa la stampante e poi premere PRINT SCREEN). Quando tale tabella sarà terminata
ritorniamo alla IAT. Se conterete tutti i 00Bxxxxxx vedrete che sono tanti quanto le voci
JMP DWORD che avrete stampato. Mettete i fogli stampati in ordine e continuate a dare
un'occhiata alla IAT. Subito la fine della prima serie di 00B...... troverete uno 0 e poi
un'altra serie di 00Bxxxxxx con questa volta alcuni numeri leggermente cambiati....
battete U con l'indirizzo indicato nel primo elemento di questa serie e vi ritroverete
davanti ad una nuova tabella ... questa volta che punta a USER32!Nomefunzione.... stessa
procedura... stampate anche questi altri fogli e ritornate alla IAT... non troviamo nulla
altro di interessante..... le altre puntano ad altre funzioni.... direttamente ad esse e
non a mezzi passaggi. Chiudiamo il SoftICE e tracciamo il file crack.exe. Ve la ricordate
la prima CALL incontrata ? Puntava alla tabella e successivamente alla funzione
GetVersion. Invece stavolta punta direttamente a CloseHandle... che cacchio! Il programma
va in errore perchè le funzioni sono tutte mescolate..... o meglio è in disordine la IAT
che il SafeDISC ci ha gentilmente fornito.... :( Cosa si fa ? Non si dispera.. abbiamo la
tabella corretta stampata... Avviamo il Windasm e lasciamolo disassemblare il file
crack.exe! A compito finito salviamo e lo apriamo con un editor di testi, possibilmente
quello del DOS. Ora ci selezioniamo prima la voce che dice * Import from KERNEL32 e tutte
le voci sotto.... poi ci copiamo anche la sezione USER32 e le salviamo in due file a
parte. KERNEL32.TXT e USER32.TXT. Ora prendiamo i fogli stampati.... guardate che
disordine! Non ci sta manco una funzione nell'ordine che sono sui fogli stampati! Cosa
fare ? Il Windasm oltre che al nome della funzione ci riporta anche altri valori.... ecco
un esempio:
Addr:0018D052 hint(00FE) Name: GetModuleHandleA
Il valore subito dopo Addr: è il valore che sta scritto nella IAT per quella
funzione... punta a due byte precedente il nome... Ora ordiniamo il file secondo l'ordine
che abbiamo sulla stampa.... con un pò di minuti di santa pazienza diamo lo stesso ordine
al testo di KERNEL32.TXT e USER32.TXT così come SafeDISC lo dava in memoria nella
tabella. Riorganizzata la tabella per filo e per segno la stampiamo e avviamo l'editor
preferito. Ci posizioniamo all'inizio della IAT (scrivendo l'offset, l'RVA o magari
direttamente la locazione di memoria...) e cerchiamo il valore della prima
funzione(seguendo l'ordinamento INTEL... esempio non cercare 0018D052 ma 520D1800). Ne
troviamo subito uno, ripremiamo cerca e più avanti ne trova un secondo. Il primo valore
era nella locazione in cui verrà scritto l'address dell'api, il 2nd invece è il valore
dell'ordine in cui dovrà essere caricata la tabella della IAT dal loader di windows.
Bene... ora cerchiamo l'inizio di questa tabella.. che è preceduta da una dword tutta
azzerata. Incominciamo a correggere tutti i valori così come sono riportati sugli ultimi
fogli stampati. Ecco che qui vi serve un aiutante... non vorremo correre qualche
errore.... quindi io per questo lavoro ho usato mia sorella. Dato che non aveva nulla da
fare (a scuola non era andata... almeno ha fatto qualcosa di utile... meno male che non le
ho detto cosa mi stava dettando ... :) ). Finito questo lavoro per KERNEL32.DLL arriviamo
proprio davanti a 4 byte azzerati.... li saltiamo e incominciamo con USER32.DLL. Finito
anche questa tabella salviamo il file.... riavviamo il pc senza softice caricato e se non
avete commeso errori potrete caricare crack.exe e vedere il bel gioco partire e dire ciao
ciao a SafeDISC :) Ripetere la procedura iniziando d'accapo per l'altro eseguibile....
Copiate il contenuto del CD su hard disk, non dimenticatevi le traccie AUDIO, sostituire i
file CARMA2_SW.EXE e CARMA2_HW.EXE con i vostri nuovi eseguibili e rimasterizzare il tutto
:P Safedisc è morto! :) E con questo è tutto
cod
Durante la fase di organizzazione delle API in KERNEL32.DLL potrete incontrare alcune
voci che non corrispondono..Tipo AddAtomW che non troverete nelle funzioni importate.
Basta scrivere U AddAtomW in Sice e successivamente U e il nome di una qualsiasi funzione
che vi è rimasta non organizzata. Trovate così tutti gli elementi che vi interessano e
mettetele a posto!
Desidero ringraziare le seguenti persone:
Il proprietario del CD originale senza il quale questo tutorial non sarebbe mai stato
scritto.... :)
Mia sorella - Senza la quale avrei dovuto perdere altri 10min in + a fixare tutta la
IAT dei due eseguibili
xOANON - Per i suoi preziosi consigli..... ora non mi ritrovo il log di quella sera..
ma dovete vedere il grosso aiuto che da.... non si spreca...... :)
Max Pirata - Il destinatario della versione in testo di questo tutorial,
successivamente riscritto per la UIC di Quequero (non me ne volere a male!).....Nooooooooooooooooooooooooooooooooooooooooooooooo cosa ho potuto
sentire, nooooooooooooooooooooooooo :)))))))))))))))))))))))) Ciauzzzzzz NdQue :)
Acid Burn e Black Check - Gli autori degli unici tutorial che ho trovato su SafeDISC.
DIO .. em Quequero :) per essere resuscitato .... un grosso saluto a tutti i
frequentatori di #crack-it e della mail list e ad AndreaGeddon che manda mail chiedendo
questo benedetto tutorial..... :)
Questo documento è stato scritto per puro scopo didattico. L'autore condanna
quanti utilizzeranno tali informazioni per alimentare il mercato della pirateria ed
inoltre l'autore non si assume nessuna responsabilità dell'uso che sarà fatto da terzi
di tali informazioni. Altresì non si assume nessuna responsabilità per mancati profitti
causati agli autori del prodotto stesso, e relativi deficit mentali che possano derivare
dalla lettura di tale documento. L'arte del cracking non deve alimentare il circuito della
pirateria, ma dimostrare alla comunità dei programmatori quanto banali siano le
protezioni che esse adottano.
-
- UIC's page of reverse engineering, scegli dove andare:
Home
Anonimato Assembly
CrackMe ContactMe Forum Iscrizione
Lezioni Links Linux NewBies News Playstation
Tools Tutorial Search
UIC Faq