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: cod@antisocial.com
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:
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: