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

Introduzione

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!).

Tools usati

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!

URL o FTP del programma

Da qualche automobilista incallito che ama i videogiochi e odia il codice della strada .... dove altrimenti potreste trovare questo bel gioco ?

Notizie sul programma 

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à.

Essay

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

Note finali

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..... :)

Disclaimer

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

UIC