Omnia2000 Gold


06/02/2000

by cod/Warez in Progress

 

 

UIC's Home Page

Published by Quequero

Quel gran cornuto che ha inventato SecuROM non aveva niente da fare!

In questo tutorial troverete tutte le informazioni su come crackare Omnia2000, e utili informazioni su come crackare le ultime versioni di SecuROM.....Vabbè, il commento lo dovevo scrive io...ad ogni modo bravissimo cod che ti sei sbattuto sta protezione ed hai scritto un tute un po' fuori dai canoni perchè sembra più una narrazione che un tute vero e proprio, ma sono sicuro che chi è competente in materia lo capirà benissimo

Infatti non ci aveva niente da fare! Un incubo per me... na passeggiata per voi..... :)
UIC's form
Per motivi di sicurezza Warez in Progress non possiede nessuna home page
E-mail: [email protected]
IRCNet: #crack-it #cdrita
UIC's form

Difficoltà

( )NewBies ( )Intermedio (X)Avanzato (X)Master

 

Come avrete potuto osservare ho settato due livelli di difficoltà! Chissà perchè ? Ecco spiegati i motivi! Ho settato il livello AVANZATO in quanto non è una passeggiata, poi il livello MASTER perchè dovrete ricorrere a tutto ciò che vi passa nella mente per poter crackare questo programma... e credo in genere le ultime versioni di SecuROM


Omnia2000 Gold
Written by cod

Introduzione

Omnia2000 GOLD è la versione più grossa della enciclopedia più penosa che al momento abbia visto sul mercato! Ma siccome l'ho dovuta comprare... la copia di backup mica la potevo fare se non la crackavo :) Apparte gli scherzi... l'ho crackata per vendetta personale per un CD vergine che ci ho rimesso nel dicembre del 1998 quando ho avuto tra le mani Omnia99 e non sapevo crackare! Però in 10 mesi ne ho fatta di strada :)

Tools usati

Borland Turbo Assembler 5.0 - Ci servirà alla fine!

FrogsICE 0.41 - L'antidebugger! Come si fa senza di questo ???

GREP - Avete presente questa utility ? Di solito è fornita insieme ai compilatori del TASM ... nonostante non serva per   crackare avrete modo di apprezzarne la sua utilità!

Hacker's View 6.10 - Io sto usando questo... ma va bene uno qualsiasi! Per quel che mi riguarda tutte le modifiche che indicherò saranno eseguite per mezzo di questo programma.

iCEDump 5.0 - Applicate la patch di iCEDump al vostro Softice ... oppure potrete usare direttamente l'ultima versione di iCEDump, la v6 che non necessità di patchare WINICE.EXE

Interactive Disassembler 3.8a PRO - Ce l'avete ? Nooooo e come fate ?? Scaricatevelo!

Numega SoftICE 4.01 - Per crackare... altrimenti che ci facciamo ?

SUPCOMP/SUPWRITE - Piccole ma ottime utility di Pedro

UCF ProcDump 1.6 - Prima o poi ci torna utile!

W32 Disassembler - Ottimo! Sopratutto nelle ultime parti del cracking!

URL o FTP del programma

La trovate in qualsiasi negozio dove vendono software, in libreria e forse anche in edicola! Non dite poi che non avete Omnia per crackarla!

Notizie sul programma 

Omnia2000 chi non la conosce ? E' una enciclopedia (tolgo l'attributo OTTIMO) facile da usare ma che in se raccoglie poche
informazioni dettagliate! Di gran lunga preferisco la Rizzoli La Rousse... che tra l'altro non è protetta!

Essay

Le strade da me seguite durante questo cracking sono state molte e sopratutto diverse! Tutto ciò è documentato dalla quantità di strumenti utilizzati durante questo cracking. Innanzitutto cercherò di organizzare al meglio tutti i ricordi che ho di questi ultimi 45giorni, più o meno i giorni in cui ho cercato in ogni modo di crackare Omnia2000, anche se effettivamente negli ultimi 7 giorni ho capito la via giusta per crackare l'enciclopedia stessa. Ritorniamo al 1999, precisamente al periodo di Natale. Appena installata l'enciclopedia la prima cosa che cercai di capire e da dove CRISTO SANTO sbucavano tutti quei file eseguibili che erano presenti in C:\Omnia ... benedetto DIO nel 3° CD ce ne sta uno solo e qui me ne ritrovo di più!!! Per risolvere questo dilemma faccio un backup di tutti i 3 CD (anche se sono 4 realmente, e il 4° non ho avuto modo di revisionarlo! Quindi per me non vi è modo di sapere se PLANET.EXE presente nella ROOT del 4° CD è protetto o no!! Bhooo spero di averlo nei prossimi giorni per dare un'occhiata). Carico il 1. CD nel lettore Samsung 32x, il 2. CD nel Creative 48x e il 3. CD nel masterizzatore (.... se avevo il 4. CD lo caricavo nel 24x ATAPI tanto per cambiare!) Ok tutti i 3 CD sono presenti nella unità e sono tutte copie masterizzate dell'enciclopedia... perfettamente duplicate con Instant CDWizard e quindi in esse la protezione di SecuROM non è stata riprodotta! Avvio dal 3. CD la procedura di installazione, tutto regolare... tutto a posto! Quindi il 3. CD che sarà quello da modificare è regolare, nessuna protezione! Avvio l'enciclopedia.... non funziona! Come volevasi dimostrare!!! il loader non ha trovato le informazioni di SecuROM e quindi non avvia l'enciclopedia... avvio Omnia2000 Gold 2 .. che corrisponde al disco 2 e compare il messaggio di errore dicendo che non è stato trovato il CD! Porco cane pure sto CD è protetto ?? E come modifico la procedura di installazione ?? .... Parecchi giorni più tardi mi accorgo che quella stupida finestra di avvertimento era data dal fatto che SecuROM ricerca il CD in tutti i lettori presenti, mentre quella cretina di De Agostini invece si limita al 1. lettore CD presente nella macchina..... ovvero il mio buon vecchio Samsung (sull'aggettivo BUONO ci ho parecchi dubbi... ma fino all'inizio di gennaio ha svolto egregiamente il suo lavoro.. dopodichè sono stato costretto ad affiancarlo con l'altro scassapalle del Creative 48x!).

Il primo grosso problema l'ho avuto nell'identificare la PROTEZIONE usata da Omnia2000.... Ho analizzato diverse informazioni.... ed ecco un breve risultato:

CDCOPS - No non è.... ci dovrebbe stare la DLL CDCOPS da qualche parte... ma non la vedo.....

SECUROM - CMS16.DLL CMS32_95.DLL CMS32_NT.DLL sono presenti in C:\Omnia ma queste DLL a che cazzo servono ?? Le ho viste in parecchi CD quindi pensavo che fossero parte di qualche cosa.... ma sfogliando il tutorial di Pedro e di R!SC ho letto che fanno parte della protezione.... ma porco cane di quale protezione se non vengono richiamate ?? E NO!!

SAFEDISC - Ho ENCARTA2000 in casa.... e non mi sembra affatto protetta con SAFEDISC... altrimenti gli errori di lettura mentre la duplicavo sarebbero saltati a prima vista e invece i CD sono stati duplicati perfettamente!

LASERLOCK - ..... nessun errore di lettura quindi non è di sicuro!

Ma porko cane ??? Le ho passate tutte!!! Con che cazzo sarà mai protetta questa enciclopedia ???? Avvio W32 Disassembler (da ora in poi W32Dasm) e gli faccio decompilare per quanto sia possibile l'eseguibile OMNIAMMG.EXE... ci mette circa un 5min (.... già io ho un vecchio K6 233Mhz ... ma sfido chiunque in questa stupida città ad utilizzare il PC come lo uso io! Durante questo periodo il sistema si è visto acceso alle 7am e spento alle 11pm!).. Ok è finita .... come al solito W32Dasm non è di grande aiuto.... i msg che compaiono quando non è presente il CD non ci sono.... mi sembra di aver letto qualcosa da qualche parte riguardo a questi msg....... hei ma allora è SecuROM o no ?? Bho... parecchie cose mi fanno pensare a SecuROM e parecchie altre no!

Avvio IDA e gli faccio decompilare OMNIAMMG.EXE ..... il risultato è lo stesso! Non si capisce niente!! Questa non è la strada da seguire. Quindi l'unica strada da seguire è scoprire cosa fa di preciso questa protezione per poterla smontare!

Avvio il bel SoftICE e incomincio a steppare.... Parecchie pagine di codice passano sotto i miei occhi... noto che qualsiasi punto di interruzione inserisca fa si che l'enciclopedia si blocchi, o meglio durante le routine di decrypt di alcune porzioni di codice il ciclo non termina mai.

Ecco il codice di OMNIAMMG.EXE quando viene avviato ... di sicuro non trovate tutti questi commenti!

006A1AA0         public    start
006A1AA0 start        proc near
006A1AA0
006A1AA0 var_1C        = dword ptr -1Ch
006A1AA0 var_18        = dword ptr -18h
006A1AA0 var_10        = dword ptr -10h
006A1AA0 var_4        = dword ptr -4
006A1AA0
006A1AA0        push    ebp
006A1AA1        mov    ebp, esp
006A1AA3        push    0FFFFFFFFh
006A1AA5        push    offset     unk_6C2600
006A1AAA        push    offset     __except_handler3
006A1AAF        mov    eax, large fs:0
006A1AB5        push    eax
006A1AB6        mov    large fs:0, esp
006A1ABD        add    esp, 0FFFFFFF0h
006A1AC0        push    ebx
006A1AC1        push    esi
006A1AC2        push    edi
006A1AC3        mov    [ebp+var_18], esp
006A1AC6        call    ds:GetVersion     ; Get current version number of Windows
006A1AC6                     ; and information about the operating system platform

Le solite baggianate iniziali, il file controlla la versione del sistema operativo per assicurarsi di girare sulla macchina giusta ? Bhooo!

006A1B0A loc_6A1B0A:                 ; CODE    XREF: start+5Ej
006A1B0A        mov    [ebp+var_4], 0
006A1B11        call    __ioinit
006A1B16        call    ___initmbctable
006A1B1B        call     ds:GetCommandLineA
006A1B21        mov    ds:dword_6C6DC8, eax
006A1B26        call     ___crtGetEnvironmentStringsA
006A1B2B        mov    ds:dword_6C2B74, eax
006A1B30        test    eax, eax
006A1B32        jz    short loc_6A1B3D
006A1B34        mov    eax, ds:dword_6C6DC8
006A1B39        test    eax, eax
006A1B3B        jnz    short loc_6A1B47
006A1B3D
006A1B3D loc_6A1B3D:                 ; CODE    XREF: start+92j
006A1B3D        push    0FFFFFFFFh
006A1B3F        call    _exit

Qui invece abbiamo l'inizializzazione dell'ambiente in cui il software si sta avviando! Ma c'è una cosa che devo far notare.... questa è l'inizializzazione della protezione! Non del programma originale!!

006A1B47
006A1B47 loc_6A1B47:                 ; CODE    XREF: start+9Bj
006A1B47        call    __setargv
006A1B4C        call    __setenvp
006A1B51        call    __cinit
006A1B56        mov    eax, ds:dword_6C2B50
006A1B5B        mov    ds:dword_6C2B54, eax
006A1B60        push    eax
006A1B61        mov    eax, ds:dword_6C2B48
006A1B66        push    eax
006A1B67        mov    ecx, ds:dword_6C2B44
006A1B6D        push    ecx
006A1B6E        call    _main ; FUNZIONE PRINCIPALE!
006A1B73        add    esp, 0Ch
006A1B76        mov    [ebp+var_1C], eax
006A1B79        push    eax
006A1B7A        call    _exit

Ed ecco la chiamata alla solita funzione _main ... quindi tutto ciò significa che questa protezione è stata scritta in C ??? Bhoo penso proprio di si... non credo che IDA sia tanto bravo a decifrare tutto questo codice se non fosse stato scritto in C. Proseguendo nel trace della funzione main vidi un pò troppe chiamate alla solita API GetProcAddress, infatti la protezione non ha una EXPORT Table, ma si rifà all'export table del programma per cercare il resto delle informazioni necessarie alla normale esecuzione della protezione.

Continuo a tracciare il codice e arrivo in una sezione (ometto gli indirizzi perchè non li ricordo più e ogni giorno buttavo una marea di carta con su scritti indirizzi che non ricordo più :( ) in cui il SoftICE incomincia a mostrare il caricamente di alcune DLL e termina l'esecuzione del programma... dopo aver controllato il CD inserito (un duplicato... lo so che con l'originale funziona, ma devo capire perchè non funziona col duplicato!). Segno i nomi di queste DLL per cercare di calpire da esse qualche utile informazione e le vado a cercare nella directory C:\WINDOWS\SYSTEM e vi trovo tre DLL aventi circa tutte lo stesso nome:

SINTF16.DLL - Mi fa pensare al fatto che la protezione fosse in grado di girare pure su Windows 3.1

SINTF32.DLL - Ecco questa è per Win32, quindi è ciò che mi interessa!

SINTFNT.DLL - Questa non me ne può fregar di meno!!! Non la voglio

Disassemblo con W32Dasm SINTF32.DLL e per prima cosa vado a guardare la EXPORT Table, la bestia maledetta che mi interessa.

Addr:30005040 Ord: 1 (0001h) Name: thk_ThunkData32
Addr:30001020 Ord: 2 (0002h) Name: C32
Addr:300010F0 Ord: 3 (0003h) Name: GGDM32
Addr:30001100 Ord: 4 (0004h) Name: FGDM32
Addr:30001110 Ord: 5 (0005h) Name: GNOCD32
Addr:30001130 Ord: 6 (0006h) Name: GCDL32
Addr:30001150 Ord: 7 (0007h) Name: RLOS32
Addr:30001170 Ord: 8 (0008h) Name: STS32
Addr:30001190 Ord: 9 (0009h) Name: LOH32
Addr:30001300 Ord: 10 (000Ah) Name: LD32
Addr:30001320 Ord: 11 (000Bh) Name: GDS32
Addr:30001340 Ord: 12 (000Ch) Name: ADI32
Addr:300010D0 Ord: 13 (000Dh) Name: GFP32
Addr:300010A0 Ord: 14 (000Eh) Name: TC32
Addr:30001370 Ord: 15 (000Fh) Name: ATI32

Che bei nomi! GNOCD32 GCDL32! Mi fanno proprio pensare che questa DLL sia proprio la protezione! Per semplice curiosità apro SINTFNT.DLL e vi ritrovo la stessa EXPORT Table, quindi determinato il sistema operativo su cui viene eseguito carica la DLL appropriata e richiama sempre le stesse funzioni! Edito il WinICE.DAT ed aggiungo nella sezione delle export la stringa EXP=C:\WINDOWS\SYSTEM\SINTF32.DLL. E' una semplice cosa che faccio quando alcuni software basano la loro protezione su una DLL, così capisco quale di quelle API richiama! Ora l'ideale sarebbe brekkare questa DLL per vedere un pò come si comporta! Riavvio il sistema per permettere il caricamente di SINTF32.DLL e setto un pò di break point su tutte le API presenti nella DLL! Avvio Omnia e una MessageBox compore sul mio piccolo monitor con la scritta CORRUPT DATA! Brutto figlio di buona donna!!! Ancora dovevo incominciare a tracciare e già tu mi sbatti sul monitor questa messagebox ?? Rimuovo tutti i punti di arresto e riavvio l'Omnia.... rileggo il solito rapporto generato in SoftICE circa il comportamente del sistema e cosa trovo ? In mezzo a quella sporcizia di righe vedo StartDLL16 quindi entrambe le DLL per Win95/98 e quella per NT richiamano la versione a 16bit! Questa giornata non finirà mai!!! Ricarico W32Dasm e gli faccio decompilare SINTF16.DLL, come al solito il codice è completamente spazzatura!!! Perchè tutte e 3 le DLL sono compresse chi con PkLite (il modulo a 16bit) chi con Petite (il modulo a 32). L'ideale sarebbe decomprimere le DLL ma che ci faccio con quelle DLL decompresse ?? Un bel nulla, quindi le cancello! Voglio proprio vedere cosa mi dice questa volta... niente proprio niente!! Le DLL sono di nuovo al loro posto e il programma non parte come al solito... Ok ragioniamo.... ricancello le DLL e faccio una ricerca su tutto il disco fisso per trovarle! Non ci sono da nessuna parte.... allora da dove spuntano ? Avvio HIEW e scelgo OMNIAMMG.EXE. Premo il tasto F7 e scrivo SINTF. Voglio cercare questi nomi dentro l'eseguibile!! Nessun riferimento nel codice come al solito alle DLL però ci trovo uno strano segmento di dati... Tutti i 3 nomi delle DLL accompagnate da varie e strane informazioni più il codice delle DLL in basso! Ok... tutto a posto! Qualora non trovi le DLL il programma se le rimette a posto ripristinandoli dal proprio codice! Allora settiamo il solito breakpoint su CreateFileA ed eccolo li! SoftICE dopo una 20 di CALL bekka l'api esatta!!! Quella di Omniammg.exe ... mi ero scordato che per aprire il file tutto il sistema usa quella API e mi sono dovuto assorbire tutte quelle chiamate! Continuo l'esecuzione del codice e incomincio a vedere nelle righe di Sice che il sistema ha aperto le DLL sopra incriminate. Ok, quale è la prima funzione che un programma richiama alla sua esecuzione ? GetCommandLineA, vi setto un punto di interruzione, premo G e meraviglia! Mi ritrovo dentro il codice della BESTIA!!! .... Ecco perchè se settavo un break point sulle export table mi dava errore! Per settare un punto di arresto SoftICE piazza nel punto desiderato il byte CC equivalente a INT 3 e Petite decomprimendo il codice (che puntualmente era tutto caricato in memoria!) trovando questo byte decomprimeva i dati con un altro significato e al controllo di integrità tutto andava a puttane. Quindi evito di settare BPX su queste API. Continuo nel TRACE della DLL finchè non arrivo al solito punto di USCITA. Certe volte non vedo proprio l'ora di vedere un RET nel codice! Rientro nel codice di OMNIAMMG e incomincio a vedere di nuovo le solite chiamate a GetProcAddress, e questa volta però sono tutte indirizzate alla DLL e alle sue API. Tutti quei byte insignificanti si incominciano a riempiere con indirizzi di API e il codice prende un pò più di forma! La prima di tutte queste API richiamate dall'omnia è GNOCD32 .... Verifica se non è presente il CD nel sistema ?? Infatti... falsfico il risultato di ritorno e il sistema mi scrive bello e chiaro NESSUNA UNITA' CDROM TROVATA! Ok ... non è il punto in cui si deve cambiare tutto! Continuo a tracciare e becco una chiamata a RLOS32. Il controllo a SoftICE non viene più restituito, il lettore CD dallo stato di stand-by incomincia come un forsennato a caricare dati dal disco e il controllo ritorna a Windows, senza che io abbia potuto capire dove diavolo veniva stabilito se il CD era falso o no! Penso che il programma usi qualche protezione ANTI DEBUGGING e avvio FrogsICE.... setto tutte le opzioni del caso e stavolta non parte proprio!! .... Nessun avvertimento però stranamente OMNIA non si avvia più. Leggo un rapporto di FrogsICE e trovo alcune referenze nell'offset occupato dalla DLL SINTF32 ai registri di debugging della CPU.

mov dr0, eax - mov dr3, ecx

Un pò strane per un programma normale! Ma da quanto mi ricordi i registri di debugging sono stati progettati dalla INTEL proprio per favorire il debugging del software, e questi registri sono utilizzati dai debugger per settare delle interruzioni nell'accesso a determinate locazioni di memoria! Allegria!!! Non possiamo utilizzare BPM per brekkare!! Brutto zozzo! Ancora non ha avuto un nome questa protezione!!!

Allora cosa faccio ?? Mando a fanculo l'enciclopedia, prendo un CD di giochi e mi metto a giocare ? No.. non è giusto! Prendo l'enciclopedia, la rimetto a posto e dico BASTA! MI SONO ROTTO!!! ORA NON NE POSSO PIU'!

Passano i giorni, io non cracko più niente... non cado affatto in depressione (ci mancherebbe pure!) fino a un giorno, in cui mi ritrovo una e-mail in cui MrGima mi fa gentilmente (mooooooooolto gentilmente) notare che dovevo mantenere una promessa... fatta a lui e fatta un anno prima a me stesso! Devo crackare OMNIA! Posto un messaggio sul forum di Ringzer0 dietro consiglio di alt255 chiedendo aiuto su OMNIA2000. Il giorno dopo ottengo una risposta da un certo Dark Rapt0r! Omnia2000 è protetta con SecuROM e prima di FIXARE le CALL devo procedere a rimuovere la protezione del SecuROM, in un'oretta seguendo il tute di R!SC dovrei farcela. Mi indica pure di scaricare le Cracker's Notes dall'url http://crknotes.cjb.net e di leggerle. Ok cosa faccio! Avvio il DOWNLOAD, un file di circa 350kb il mio modem ci impiega al massimo 30sec a scaricarlo! Passano 20min e non ho neanche il 50% del file!! FANTASTICO sono capitato in una di quelle sere del cazzo in cui TIN non cammina!! Mitico!!! Chiedo allora ad alt255 se può per favore scaricare lui il file e fare un DCC Send... come non detto! Lui il file lo scarica in un batter d'occhio, ma il mIRC mi segnala gentilmente che ci vorrà un'oretta a ricevere il file dalla DCC Send... che serata fantastica!!! PROPRIO FANTASTICA! Ok, non dispero e rientro nel WEB, questa volta in 2min il file è sul mio PC! Stacco, decomprimo e vado a leggere le informazioni.... però perchè non mi avete detto che esistono raccolte così belle di documenti sul cracking! PORCO CANE!! SONO SEMPRE L'ULTIMO A SAPERE LE COSE CHE MI INTERESSANO!

LE ULTIME DUE SETTIMANE

Dark Rapt0r dice che in un'oretta dovrei farcela.... mi sa di aver impiegato 2 settimane :) Sono lento io o c'è qualcosa che non quadra ? Dovrei leggere il tute di R!SC ..... io di inglese non capisco una mazza! Il traduttore che uso è peggio di me, se almeno io qualcosa sono in grado di comprenderla lui no!!! Bell'aiuto che mi ritrovo!!!

Leggo il tutorial di PEDRO il quale dice che SecuROM cripta porzioni di codice per ben 4 volte! 3 le decripta prima del controllo del CD e la 4 dopo tale controllo! Ok.... allora facciamo come dice lui! Settiamo un punto di interruzione su WriteProcessMemory:

E' presente.... sento che è la volta buona! Analizzo i parametri contenuti nello stack e scrivo su un foglio di carta (.. per mia fortuna ho un 30 penne e qualche migliaio di fogli da scarobbocchiare!) quanto segue:

1. WriteProcessMemory

Origine - UNKNOW! La locazione è del tutto indifferente, in quanto può cambiare da PC a PC dato che è una semplice routine che si occupa di allocare dello STACK!

Destinazione 00413000 - Non è all'inizio del programma ???

Lunghezza 05000h - Ecco! Sono un bel pò di byte!!

0069DA2D - Qui viene settata la lunghezza del blocco dati

0069DA4F - Chiamata a WriteProcessMemory

Salvo questi dati sul disco fisso nel file DUMP.000 e continuo! Fantastico.... non funziona lo stesso!!! Omnia si blocca lo stesso.... ritorno a Pedro e intravedo in quel documento una frase in cui dice che se l'enciclopedia si accorge che la sto tracciando non si avvia e per farla ripartire dovrò riavviare la macchina! Bella prospettiva! Avrò riavviato il PC per colpa dell'enciclopedia un centinaio di volte!! Fin qui però c'ero arrivato io! Me ne ero accorto che se la tracciavo o se inserivo un punto di interruzione questa lurida bastarda non si avviava!

Riavviato il PC ritorno al solito punto... però stavolta non traccio, mi limito a inserire delle interruzioni alla fine di quei lunghi cicli che si occupano del decrypt delle porzioni di codice inserite nell'enciclopedia.

Alla fine di questi decrypt scorro in basso nel codice e becco le altre due WriteProcessMemory che saranno richiamate!

Ancora più meglio, riesco a ritrovare gli indirizzi in cui saranno copiati i dati! E allora cosa faccio ?? Dato che ancora i dati da inserire non sono pronti e il contenuto è tutto immondizia gioco d'azzardo! Appunto su un altro foglio le locazioni

Destinazione 00699A80 - Lunghezza 3666h - 0069DD81 punto in cui viene settata la lunghezza del blocco dati - 0069DD9C punto in cui viene richiamato WriteProcessMemory

Destinazione 0069DFEC - Lunghezza 2E8Ah - 0069DFAA punto in cui viene settata la lunghezza del blocco dati - 0069DFC5 punto in cui viene richiamato WriteProcessMemory

Ok queste sono le locazioni che vengono sovrascritte da SecuROM in memoria in quanto sono criptate! Ora dato che a tracciare non ci arrivo mai alla soluzione cosa faccio ? SecuROM per richimiare il lettore CD usa l'INT31 Servizio 3 ovvero simula interrupt in modalità reale! Setto in SoftICE un BPINT 31 IF AH==3 e avvio Omnia col CD originale inserito. Aspetto un 2 3 sec e SoftICE compare sullo schermo, in mezzo al codice di un modulo a 16bit (SINTF16.DLL). Premo F10 e eseguendo lo step rientro nel codice di Omnia2000, ma questa volta non mi è permesso tracciare :( Queste DLL che usa Omnia proteggono il selettore in cui gira l'applicativo e il debugger si blocca. Premo G e ritorno nel modulo a 16bit non avendo rimosso il breakpoint, premo F10 per eseguire l'int e mi ritrovo ancora li.. sarà impazzito il PC ?? Premo ancora F10 e stavolta sembra continuare lo step dentro la DLL.. ok rientro in OMNIA e mi ritrovo in una locazione diversa dalla prima API richiamata dal SecuROM e come se non bastasse SoftICE non ne vuol sapere di steppare dentro questa bastarda di enciclopedia! Non mi perdo d'animo e premo un'altra volta G, di nuovo su quel maledetto INT31, stavolta devo premere 3 volte F10 per riprendere il cammino e rientro nel codice di Omnia. Meraviglia delle meraviglie!! Stavolta posso steppare dentro la Omnia e rimuovo quindi l'interruzione settata in precedenza. Man mano che proseguo nello step (tutti i punti di interruzione settati non fanno altro che bloccare il PC) noto come le varie routine di SecuROM richiamano il lettore CD per leggere l'impronta digitale che ne attesta l'autenticità! Questo ciclo mi sa che non finisce mai!!! Devo assolutamente uscire da qui! Quindi mi metto a scorrere il codice alla ricerca di un RET per poter uscire da questa maledetta protezione!! Alla ricerca tanto disperata di un RET scorro un'altra chiamata a WriteProcessMemory!! Come farò ad arrivare lì ?

:006BB20 LEA EAX, DWORD PTR (EBP-18)

:006BB23 PUSH EAX

:006BB24 XOR ECX, ECX

:006BB26 MOV CX, WORD PTR (006C4BC0)

......

:0069B2F CALL DWORD PTR (006C42B4) ; Call WriteProcessMemory

Riesco a trovare anche il punto in cui i dati saranno scritti, 004153D8 .... ma non rientra nella stessa area della prima chiamata a WriteProcessMemory.... la cosa diventa sospettosa!!! Questo SecuROM cripta più volte la stessa area di memoria!!! Trovate tutte e quattro le zone è giunto il momento di salvare questi dati! Nell'eseguibile vero e proprio non si può permettere a SecuROM di decidere o no se è giunto il momento di decriptare o no i dati, e sopratutto il controllo del CD è contenuto in ha inizio in 00699A90 e quell'area di memoria è crittata nell'exe originale!

Avendo già patchato WinICE con iCEDump batto i seguenti comandi sul terminale:

pagein d 413000 5000 c:\omnia\dump.000

pagein d 699a80 3666 c:\omnia\dump.001

pagein d 69dfec 2e8a c:\omnia\dump.002

La 4 locazione di memoria non la registro affatto in quanto è compresa nella stessa sezione della prima, lavoro risparmiato!

Esco da Omnia e vado al prompt di msdos, dove faccio una copia di backup dell'eseguibile incriminato! OMNIAMMG.EXE e creo O2K.EXE. Ora bisogna convertire quegli offset di memoria in indirizzi chiari dove andare a scrivere dentro il file!

Avvio HIEW ed ottengo in 2sec con una estrema facilità gli indirizzi:

413000 -> 13000

699A80 -> 279A80

69DFEC -> 27DFEC

Ok, ricordatevi che gli indirizzi sono espressi sempre in forma esadecimale, e quasi tutto ciò che è stato scritto anche se omesso è sottointeso come valore esadecimale! E' giunto il momento di sostuire le sezioni nell'EXE di Omnia2000!

Per l'occasione utilizzo SUPWRITE, una utility scritta appositamente da Pedro per fare questo piccolo lavoro.

supwrite dump.000 o2k.exe 0x0 0x13000 0x5000

Ed ecco copiato l'intero contenuto di dump.000 al posto giusto in o2k.exe

Idem per gli altri 2 file!

Avvio di nuovo HIEW e mi sposto sugli indirizzi contrassegnati dove vengono richiamate WriteProcessMemory e setto la lunghezza a 0. Non deve essere scritto nessun byte in memoria!! Avvio O2K.EXE e manco col CD originale parte :) Ho fatto dei progressi!!! Prima partiva, questa volta no!!!! SIGH :( ma non mi do ancora per vinto! Avvio W32Dasm e dopo altri 5min di logorante attesa ottengo il codice disassemblato di O2K.EXE .... Mi posiziono sull'offset 00699A90 dove incominciava il check del CD e vi trovo la referenza a 006A0C04. Ok, quindi se il CD originale è inserito il programma ritorna in questo blocco di dati, altrimenti no! Esce prima :) non raggiungerà mai il RET posto alla fine della routine che ha inizio a 699A90.

Scorro in basso il codice con W32Dasm e trovo questo frammento

:006A0C60 mov eax, 415e18

:006A0C65 nop

:006a0c66 nop

:006a0c67 push eax

:006a0c68 jmp 6a0c6d

:006a0c6a pop eax

:006a0c6b jmp eax

Ok... cosa è questa locazione ?? L'entry point del programma originale!! Ovvero dove incomincia OMNIA2000!!!

Ritorno al prompt di ms dos e modifico l'header di O2K.EXE indicando come punto di entrata 415E18.

Avvio O2K.EXE e SoftICE mi costringe a resettare :( Errore di protezione: Pagina non valida! SIGH :((

Riavvio SoftICE e questa volta con Symbol Loader carico O2K.EXE per controllare cosa non va di preciso!!!

La prima istruzione che è presente è un PUSH 416280 seguito da un CALL DWORD PTR (00415E12) che risulta essere un JMP DWORD PTR 0040135C. E qui il programma entra nella DLL di VB6, ma qualcosa non quadra!! Dovrebbe entrare in una API di VB, non in un punto a caso di MSVBVM60... cosa c'è di errato ? batto il comando reip exitprocess e termino l'applicazione evitando che faccia crashare la macchina! Prendo il CD originale, lo infilo in quel bastardo di lettore CD, avvio Omniammg settando un break point su 415E18 e dopo che SecuROM ha fatto tutte le sue porcherie SoftICE compare! Le solite istruzioni, solo che stavolta il JMP fila dritto a ThunrtMain, l'API che si occupa di inizializzare le applicazioni scritte in VB... qualcosa non quadra! Da qualche parte quel bastardo di Securom patcha nuovamente il contenuto della memoria, ma in quale locazione ? L'unica soluzione sarebbe riprendere tutto d'accapo, per cercare di capire dove lo fa! ma la routine del check del CD è maledettamente lunga... quindi faccio il bastardo :) batto il comando PAGEIN D 401000 17000 C:\Omnia\DUMP.100 e salvo il codice patchato in precedenza da securom più gli indirizzi delle API che puntano a MSVBVM60.DLL. Ritorno al prompt e utilizzando sempre supwrite sostituisco tutto ciò che va da 0x1000 a 0x18000 in O2K.EXE. Avvio il file e meraviglie delle meraviglie :))) l'applicazione ha provocato un errore di protezione: Pagina non valida

EIP = AAAAAAAA CS=177 bla...bla...bla...bla...

Riavvio W32Dasm e decompilo di nuovo il file... dove avrò sbagliato ?

Riavvio il PC e carico per l'ennesima volta SoftICE e questa volta al posto della DIALOG BOX del windows compare il SICE con la sua allegra schermata nera indicando ERRORE.... vado al prompt di Sice e scrivo D ESP per vedere da dove diavolo viene generata questa chiamata... un punto nel codice di Omnia, decompilo quel punto e trovo la seguente istruzione:

CALL DWORD PTR (006AA228)

..... essendo un pò matto mi metto a tracciare l'enciclopedia e ad ogni CALL che provoca errore faccio puntare EIP all'indirizzo contenuto IN SS:ESP+0 e man mano che proseguo ottengo sul monitor la finestra di errore Omnia2000: Stack esaurito!

Stiamo giocando a chi scopre più errori??? Ritorno al tute di PEDRO e vi trovo scritto che alcune CALL ad API di sistema o a funzioni stesse del programma vengono fatte puntare al codice di SecuROM... quindi quante CALL a quella maledetta DWORD troverò nell'eseguibile ?? Ritorno al prompt di msdos e mi sposto nella directory WPJFILES di W32Dasm e batto il comando: grep "006AA228" O2K.ALF >C:\CALLFIX.TXT

GREP si occupa ci cercare una stringa di testo specificata dentro le virgolette nei file specificati. L'output viene reindirizzato sul disco fisso e dopo 1min mi ritrovo un file pieno di indirizzi :)) Sono chiamate da correggere.... cosa sarà mai! Edito il file e mi prende un colpo... solo 3922 CALL contro qualche CALL che qualcuno aveva ipotizzato! Mortacci del SecuROM, questa volta si sono dati proprio da fare in Omnia! Essendo l'eseguibile creato col VB c'era da meravigliarsi se non hanno sostituito tutte le CALL con quelle di SecuROM. Alla fine di CALLFIX.TXT trovo una riga che dice

MOV DWORD PTR (006AA228), 0069BF40

Tombola!! il codice di SecuROM non era più eseguito quindi quell'indirizzo non veniva correttamente sostituito, ed avviando HIEW posizionandomi su .006AA228 guarda caso trovo AA AA AA AA, l'offset incriminato! Questa volta ci scrivo 40 BF 69 00, salvo avvio O2K.EXE e Omnia non crasha più! Però la finestra che dice che lo stack è esaurito è ancora sul mio monitor... Quelle maledette CALL devono essere FIXATE in qualche modo! .... entro in EFNet e vado alla ricerca di R!SC, ok ... non so una mazza di inglese, non riesco a spiegarmi, ma in qualche modo riesco a farmi capire e il buon R!SC mi dice gentilmente che devo creare un FIXER che faccia questo sporco lavoro! :) Cosa di più meglio dell'assembly ?

Analizzo col W32Dasm varie CALL a 69BF40 e nessuna di esse lascia qualche parametro che indichi la funzione corretta da richiamare! QUINDI COME CAZZO FA A CAPIRE COSA DEVE FARE QUEST'IDIOTA ????

.... a menocchè non si basi sul valore contenuto in ESP+0, ovvero al punto in cui deve ritornare il codice per calcolare l'API esatta! Devo scrivere un FIXER.... allora vediamo di costruire in teoria il FIXER:

Area in cui deve lavorare:

00401000 006C3000 - Offset iniziale e finale della sezione .text di OMNIAMMG.EXE

Informazioni da ricercare: CALL DWORD PTR (006AA228) che tradotte in linguaggio macchina sono FF 15 28 A2 6A 00

Una volta trovate queste registrare nello stack l'offset relativo all'indirizzo di ritorno

Trasferire il controllo a SecuROM.

Riprendersi il controllo!!!

Ricercare nella IAT quale DWORD sta chiamando

Sostituire 28 A2 6A 00 con l'indirizzo della DWORD

Ripetere il ciclo finchè non si giunge a 6C3000

A ciclo finito salvare la sezione .text e sostituirla!

In teoria può sembrare una passeggiata... non è vero ?

1. Problema: Come mi riprendo il controllo dopo averlo dato a Securom? Non posso settare un'interruzione dentro il codice perchè SoftICE mi rincoglionirà, sono 3922 CALL da aggiustare.... quindi analizziamo il codice di 69BF40... tutto normale, ed alla fine di questa maledetta routine troviamo un JMP EAX dove EAX conterrà il valore che ci servirà a noi per fare la ricerca nella IAT! ..... Perchè non sostituire quel JMP con un JMP al nostro fixer ??? Si... sarebbe una cosa giusta, ma diamo un'occhiata dettagliata... l'intera routine non usa il registro EBX, e sia R!SC sia Pedro sfruttano questo errore di SecuROM per fare ciò che serve a noi! Perchè allora non lo usiamo pure noi ??

Ok... incominciamo la codifica del FIXER..... porco giuda!! Sono le 12 di Sabato 5 febbraio 1999!! devo sbarazzarmi di Omnia entro oggi stesso..... quindi prendo il fixer di R!SC e lo adatto ad Omnia

 

;------------------------------------------------------------------------------
 ; R!SC's dodgy call fixer for 'newer' SecuROM
 ; (c) august 27th 1999 [email protected]
 ;
 ; tasm32 /mx /m3 /z /q call_fix
 ; tlink32 -x /Tpe /aa /c call_fix,call_fix
 ;
 ; copy and paste the code into compressed securom executable.. i like the pe header ... 
 ; break on the jmp eax (in the securom code, jmp orig_entry_point)
 ; recode the 'jmp eax' in the call [securom] code to jmp ebx
 ; i3here on, faults on
 ; copy the code to a empty part of memory.. m 400300 l 60 530000, r eip 530000, run it :0
 ;------------------------------------------------------------------------------

; Tutti i commenti sono quelli di R!SC tranne quelli che ho aggiunto io per adattare ad Omnia
 .486P
 .Model Flat

 .code
 main:
     call    @1  ; please excuse my first attempt at kinda relocatable code
 @1:
     pop ebx
     mov esi, ebx
     add ebx, offset here-offset @1  ; return address from jmp [6aa228]
     add esi, offset boring-offset @1
     mov edx, 401000h
     mov ecx, 6c3000h-401000h    ; La IAT in OMNIA ha inizio a 67C000 però .text finisce a 06c3000h
 search_loop:
     cmp [edx], 0a22815ffh   ; search pattern for CALL [006aa228] ; Questo l'ho dovuto mettere io ... altrimenti
; avrebbe cercato ben altro!!
     jne try_again
     cmp word ptr [edx+4],006ah  ; -
     jne try_again
     
     lea eax, [edx+6]        ; get the address which would be pushed onto the stack
     pushad
     push eax
     ;jmp dword ptr [6aa228h]
     db 0ffh,25h,28h,0a2h,6ah,0  ; jmp blah..

 here:                   ; k, we return here from securom code, the api address is in EAX
     mov edx, 401000h    ; start address of my *real* IAT, first thunk..
; La vera IAT incomincia a 6C7000 ma che cazzo ci fa EDX -> 401000 ? Ve lo domandate o no ? Beh vi rispondo
; lo stesso! Nei programmi VB gli indirizzi delle API di MSVBVMxx.DLL stanno all'inizio del programma!
 search_iat:
     cmp [edx],eax
     jz  got_match
     inc edx
     cmp edx, 4157d0h ; Fine di questa fantomatica IAT
     jne search_iat
     pop eax         ; safty, if it cant find a match for whats in EAX in our IAT
     popad
     int 03          ; match wasnt found, break on the int 03, write down the address in EDX
     jmp try_again   ; and fix it by hand..

 got_match:
     mov [esi+4],edx ; save the addr of the import address we got a match for
     pop eax
     popad
     mov eax, [esi+4]    ; retrive the address of the import in our IAT
     mov [edx+2], eax    ; paste it over the 005ac228 in the call [securom]
 try_again:
     inc edx
     mov [esi],edx   ; store the last addr EDX was on.. (in case of any problems..)
     dec ecx
     jne search_loop
     int 03
     nop
 boring:
 end main
 ;------------------------------------------------------------------------------

 

Ok, giunto a questo punto non resta che compilare il FIXER e caricarlo per fargli fare il lavoretto :P compilo il fixer e lo avvio col symbol loader, lo salvo in un file binario con icedump e esco dal processo tramite reip exitprocess. Avvio omnia (l'eseguibile originale con il CD originale!) e mi metto alla ricerca di una locazione libera per ficcarci dentro il fixer! Ne trovo una a 7A9000 subito dopo le risorse di Omnia2000. Ho cercato un pò lontano, perchè ce ne era una bella libera a 6c3000! ME NE SONO ACCORTO MENTRE SCRIVEVO IL TUTORIAL!!! Caricato il fixer la prima cosa da fare e sostituire JMP EAX con JMP EBX.... Trovo JMP EAX a 0069C4B8 e procedo con la sostituzione dell'istruzione :) facile... troppo facile! e sopratutto troppo bello! Il fixer di R!SC è impostato in modo che se non trovi un simbolo nella IMPORT TABLE richiami l'attenzione dell'utente tramite INT3, quindi setto i3here on e faults on in SoftICE. REIP 7A9000 e incomincia il lavoro del fixer! però non richiama l'attenzione il fixer di R!SC bensì i continui accessi a Pagina non valida da parte del codice Securom! Questo maledetto porco non essendo inizializzato da i numeri letteralmente! FFFFFFFF come indirizzo di funzioni :( Armato di carta e penna incomincio a scrivere gli indirizzi che devo correggere a mano, più qualche indirizzo che non ritrova di norma il fixer, dopo circa 30min ecco sulla carta circa 86 offset da fixare! Sono oramai le 4 del pomeriggio, salvo l'intera sezione .text da .401000 a .6c2000 con PROCDUMP e fixo tutto O2K.EXE usando supwrite, mollo tutto e mi rimetto dopo 1ora!

Imposto un BPX su 69C4B8 (dove sta JMP EAX!) senza caricare in memoria il fixer, questa volta il fixer sarà fatto a mano!

REIP indirizzocallnonfixatacorrettamente!

G

D ESP

U EAX

Leggo il nome dell'API a cui tenta di accedere e lo scrivo su un foglio di carta, ...... poi alla fine cambio strategia! Scrivo le API e gli indirizzi che le richiamano! Alle 7.15 finisco, tutti gli indirizzi sono fixati! Incomincio a pregare tutti i santi che mi passano per la testa... se non è la strada giusta vanno a farsi benedire le ultime 24 ore, la propabilità di aver commesso un errore durante queste 2 ore è molto alta!! Hiew O2K.EXE, ricerco tutti gli indirizzi delle API, appunto gli OFFSET in corrispondenza dei nomi sui fogli, incomincio a fixare manualmente gli indirizzi! 10min e il lavoro è finito... Avvio O2K.EXE e una message box di errore compare sullo schermo:

IMPOSSIBILE TROVARE IL PERCOSO RELATIVO IN DEAMM.INI

Sangue freddo.... ora prendo la pistola e sparo su questi CD così mi caccio dall'impiccio..... però prima di arrivare a questa drastica soluzione rinonimo O2K.EXE sottoforma di OMNIAMMG.EXE ... miracolooooooooo funziona!!! Cosa fare ? Prima cosa prendo un CD vergine e masterizzo l'eseguibile!! NON VOGLIO AVERE BRUTTE SORPRESE!!!

Stamattina, ho tirato fuori un CD vergine, il 3 CD dell'enciclopedia, copio tutto sull'hd, creo una nuova compilation assegnando l'etichetta OMNIA0MMG al CD, sostituisco il file SYSDATA\OMNIAMMG.EXE con l'eseguibile crackato, masterizzo il tutto... disinstallo la versione sul PC... effettuo l'installazione e non mi funziona l'enciclopedia!!! IL CD NON E' PRESENTE!!! COSA ?? IL CD NON E' PRESENTE ? MA E' UNO SCHERZO ???? Guardo il link sul desktop di Omnia Planet e leggo E:\PLANET.EXE... brutto deficente!!! Potevano fare un SETUP.EXE più inteliggente! La prima volta avevo installato omnia dal lettore D (il Samsung) e questa mattina avevo installato dal Creative (unità E) ecco perchè quel messaggio! Inserisco il 1. CD masterizzato nel Creative e meraviglia delle meraviglie... OMNIA 2000 E' CRACKATA

ADDENDUM 07/02/2000

E' successa una disgrazia!!! Stamattina sono andato da un amico per provare Omnia2000, con la scusa di dirgli FUNZIONA alla faccia tua che mi avevi detto che avrei finito il crack per il 2001 (quando sarebbe uscita Omnia2001 dehihi). Innanzitutto questo amico non credeva che l'avessi realmente crackata io.... ok... installiamo OMNIA sul PC. Installazione completa, 240Mb di HD... Avviamo e Windows ci dice: L'applicazione ha provocato un errore generale di protezione!

.... non disperiamo, mi dice di reinstallarla dal 1. lettore CD, il 2. non è tanto sicuro... strano sembra che funzioni meglio del 1. però nonostante abbia preso quasi fuoco mentre lo riparava! Installiamo OMNIA dal 1. lettore CD, niente! Omnia ha provocato un errore di protezione: Pagina non valida!! COME PAGINA NON VALIDA ??? Analizzo la finestra che mi dice il Windows. Nello stack capisco che l'errore si è generato all'inizio dell'enciclopedia! O porco cane cosa è successo !!! Ecco ho fatto un crack che funziona su pochi computer :(( in preda al panico devo assolutamente provare Omnia su un'altro PC. Ma sono le 10 di mattina, dove cazzo la provo ?? NOOOO tutto questo tempo buttato nel cesso!!! Torno a casa... incazzato nero... entro in IRC e becco un conoscente, gli mando il crack e gli dico di avviarlo... dice di avere Windows2000 installato, e quindi non sa se funziona... avvia il crack e dice che gli da errore ma non sa dirmi cosa perchè il Windows toglie in automatico le finestre di errori... PORCA EVA cosa è mai stato! Mi incomincia a venir dentro un dubbio..... una convizione pazzesca! Disinstallo l'omnia dal mio pc.. rimuovo MSVBVM60.DLL che lo aveva installato in precedenza mio fratello col Microsoft Visual Studio 6 e reinstallo OMNIA.... non gira neanche sul mio pc!! Ok, niente panico! Ho creato un crack funzionante con una specifica versione di MSVBVM60.DLL, quella creata nel maggio del 1999 mentre Omnia installa sul PC una versione del 1998! Sigh... cosa fare ? E perchè non funziona ?? Mi viene in mente una cosa stupida.... esiste una IAT nell'eseguibile di Omnia!! E in questa IAT risultano presenti anche delle voci a MSVBVM60 e le relative funzioni importate importate dalla DLL. Scarico sull'hard disk l'eseguibile originale di Omnia2000, inserisco il CD originale e inserisco un break point su MSVBVM60!ThunrtMain, ovvero la funzione più importante del Visual Basic.. senza quella non parte il programma!

D 401000, dove si trovano gli address delle API del VB... in tutto questa sezione è 430h bytes, dopodichè si trovano indirizzi interni a OMNIA e indirizzi azzerati... tutte le API del VB si trovano all'offset 66xxxxxx... quindi questa tabella termina a 401430h. L'import table dell'eseguibile è mappata in memoria all'offset 006C7000, D 6C7000 e mi metto alla ricerca di questi indirizzi.... li becco a 006C7534... questa tabella viene compilata dal loader di Windows ogni qualvolta viene avviata OMNIA e quindi gli indirizzi in essa presente sono tutti validi, con qualsiasi versione di MSVBVM60 .. cosa faccio ?

Chiudo SoftICE, apro con HIEW l'eseguibile crackato di OMNIA e mi sposto sull'header PE del file. Reinserisco il vecchio entrypoint, che punta al codice SecuROM, mi sposto su quella porzione di codice all'indirizzo 6A1AA0 e assemblo con HIEW un piccolo programma che fixi la IAT dell'eseguibile!

PUSHAD                         ; Salvo tutti i registri nello stack

MOV ESI, 006C7534    ; Entry point in memoria delle routine di Visual Basic in questo TASK

MOV EDI, 00401000    ; mentre il Visual Basic se le richiama qui le DLL in quanto qui c'è una copia di questi indirizzi!

MOV ECX, 0000430    ; Ecco ... la lunghezza è di 1072 byte!

REP MOVSB                 ; Faccio una copia di questi byte!

POPAD                          ; Ripristino i registri

MOV EAX, 00415E18 ; Entry point originale di OMNIA

JMP EAX                      ; Passa il controllo all'Omnia

NOP

NOP

NOP                              ; Assemblo questi 3 NOP per onestà nei confronti dei decompilatori, altrimenti

                                    ; impazziscono quando decompilano! e falsificano tutte le istruzioni!

Salvo il file, avvio il nuovo EXE crackato, ma SoftICE avverte che c'è un errore di protezione! Ok, ritorno al vecchio buon prompt, di nuovo HIEW e stavolta premo F8, poi F6 e vedo le sezioni presenti in OMNIA .... .text ha come attributi 60000020 ovvero CODE, EXECUTABLE, READABLE .... cioè è una sezione di codice, con attributo di esecuzione e di lettura! fosse questo tutto il problema! Ok, allora premo F1 su HIEW, che mi informa su come sono gli attributi... per essere WRITABLE il segmento deve avere il 31bit attivato! 0x80000000 mentre qui abbiamo solo 0x60000020 .. dovremmo ricorrere a ProcDump per cambiare gli attributi ? NO MANCO MORTI! per settare il 31bit basta aggiungere 0x80000000 al numero precedente, e quindi ottengo come risultato 0xE0000020.... mi sposto con HIEW sull'header di OMNIA trovo la sezione .text e cerco i byte 20 00 00 60 ... li trovo alla fine.. prima della sezione .data ... modifico il 60 con E0, salvo il file, avvio Omnia e funziona!! Stavolta il crack gira!! Per maggiore sicurezza mi riprocuro una versione di MSVBVM60.DLL diversa da quella installata dal sistema e gira ancora! Ok... stavolta abbiamo fatto il crack giusto!!! Mannaggia a Omnia che è stata scritta in VB!!

Con questo è tutto!! .... però resta il fatto che io ho il 3. CD di Omnia masterizzato che funziona solo con una specifica versione di MSVBVM60.DLL ... quindi questo CD sarà motivo di vendetta su qualche altra Omnia :)

INFINE VORREI FAR NOTARE UNA COSA STRANA.... che non centra niente affatto con Omnia ma è pur sempre legata ad una enciclopedia della DeAgostini... GEDEA 99... protetta con l'onnipotente CDCOPS16.... cercherò di capire come è protetta... però questo non centra niente.... Ho in casa una copia fornitami gentilmente da alt255 di Gedea '99 che guarda caso non funziona! alt255 per questo me l'ha data!! Però il punto non è questo!!! Ieri sera ho fatto la copia del 1. CD dell'enciclopedia su un ReWritable della Traxdata in TRACK AT ONCE e stranamente GEDEA mi funziona :)))

Ora non ho provato su altri rescrivibili, perchè 1. di tutto in casa ho solo CD rescrivibili a 2X, l'unico 4X è occupato da alcune cose di mio fratello... quindi è meglio non litigare... 2° non ho provato su altri rescrivibili in quanto il Samsung in Track At Once mi legge solo i rescrivibili della TRAXDATA se non sono finalizzati.... se qualcuno ha un masterizzatore in casa e qualche rescrivibile provi a fare una copia di Gedea '99.. chissà se non abbiamo trovato il punto debole di CDCOPS :)))

E' CON QUESTO E' TUTTO!

Note finali

Ok.... facciamo il punto della situazione: Omnia2000 è stato un bel target! Grazie ad essa le mie conoscenze di questo oscuro settore dell'informatica sono accresciute. Desidero ringraziare tutti coloro che hanno permesso la realizzazione di questo tutorial e/o hanno contribuito direttamente e/o indirittemante alla realizzazione del crack stesso!

MrGima - Non è un cracker... ma è la persona a cui devo molto (nel senso che devo tornargli l'enciclopedia!!) e che mi ha gentilmente fatto notare ciò che dovevo fare! Crackare l'enciclopedia.... perchè avevo abbandonato tutto! .... Se non sbaglio oltre che tornargli l'enciclopedia gli devo ancora qualche cosa.... nei prossimi giorni dovrei avere qualcosa di interessante!

Pedro, Xoanon, R!SC - Ognuno di essi ha contribuito indirettamente a crackare questa enciclopedia! Sono stati gli autori dei tutorial a cui ho fatto riferimento per crackare l'enciclopedia! Pedro sopratutto! Ho seguito alcuni punti del suo tutorial, e R!SC per l'ottimo fixer che ha realizzato.... perchè quello che mi stavo scrivendo io era un pò incasinato!!

Dark Rapt0r - E' stato la persona che mi ha detto di leggere gli appunti su SecuROM, senza di lui mi sarei bloccato chissà dove! Anche se devo fargli notare (se ha letto questo tutorial sicuramente l'avrà già visto) che questa enciclopedia è leggermente diversa da quanto c'è scritto nei tutorial!

La DeAgostini Multimedia per aver prodotto questa enciclopedia... la colpa è tutta VOSTRA!!!! Maledetti il giorno in cui avete scelto SecuROM!!

Quequero - Per gli op che ultimamente mi assegna quando entro nel chan e per tutti gli aiuti che mi ha dato! (Non ho il log... dovreste proprio leggere le sue risposte alle mie domande!! Ciauz ... scappo.... scusa... non so.... ecc. ecc.) ed infine per aver creato questo form dove ho scritto questo tutorial, data la mia mancanza di fantasia a livello grafico (anche se devo protestare circa i colori del form!)

Addendum su Quequero - Spero che non ti incazzi perchè dovrai ricaricare il tutorial!! Ieri sera Xoanon ha chiamato Quequero con un nick davvero carino... Quaqquaro... simpatico no :))......Eddai non ti mette pure tu a diffonderlo...già ci basta xoa a chiamarmi Quaqquaro non ti ci mette pure tu :)......Ah xoa...mi chiami sempre Leim e poi mi cerchi tutti i giorni.....mmmmm mi puzza sta storia hahahahah ciauzzzzzzzzz NdQuequero aka Q-UUE aka Quaqquaro :P

alt255 per avermi gentilmente detto sin dall'inizio che Omnia2000 era protetta con SecuROM ... ma chissà perchè poi non l'ho ascoltato.... forse avrei risparmiato tanto di quel tempo!!! Posso fare un commento? No meglio di no al limite me lo chiedi in forma privata hahahahah

COSA PIU' IMPORTANTE: DESIDERO RINGRAZIARE IL MIO CERVELLO PER NON ESSERE COLLASSATO IN QUESTO PERIODO... ANCHE SE A VOLTE PENSO CHE SENZA DI LUI FORSE STAREI UN PO' MEGLIO

Infine ... la persona che mi ha condotto a questa strada... di cui resterà in me per sempre un bel ricordo, anche se ora non c'è più :(

MUSICA ASCOLTATA DURANTE IL CRACKING:

Downlow - Metallica - Marilyn Manson - New Age - Dance - Chi ne ha più ne metta

MUSICA ASCOLTATA DURANTE LA REDAZIONE DI QUESTO DOCUMENTO:

Nirvana - Unplugged in New York - un'altro disco sconosciuto

Downlow - Moonlight

Disclaimer/Contratto

Le informazioni qui contenute sono state scritte a solo scopo didattico. L'autore non è responsabile dell'uso che ne farete di tali informazioni, ne tantomeno è responsabile per mancati profitti causati alla DeAgostini Multimedia o per eventuali danni causati dall'uso non corretto di questa enciclopedia. Non viene fornito in nessuna forma il crack di questa enciclopedia per i suddetti motivi.

Omnia 2000 Gold è un marchio registrato dalla DeAgostini Multimedia

SecuROM è un marchio registrato dalla Sony Corporation

cod è un individuo non duplicabile col masterizzatore

Warez in Progress è il gruppo di appartenenza

L'autore di questo tutorial è perseguibile civilmente e penalmente ai sensi dell'art.64bis del codice civile CAPITOLO XVIII - Diritti d'autore

L'autore di questo tutorial non è perseguibile civilmente e penalmente ai sensi dell'art. 64ter del c.c. Cap. XVIII - Diritti d'autore per aver fatto una copia funzionante dell'enciclopedia.

Codice civile - Capitolo XVIII - DIRITTI D'AUTORE - Art. 64ter comma 3:

Chi ha il diritto di usare una copia del programma per elaboratore può, senza l'autorizzazione del titolare dei diritti, osservare, studiare o sottoporre a prova il funzionamento del programma, allo scopo di determinare le idee ed i principi su cui è basato ogni elemento del programma stesso, qualora egli compia compia tali atti durante operazioni di caricamento, visualizzazione, esecuzione, trasmissione o memorizzazione del programma che egli ha il diritto di eseguire. Le clausole contrattuali pattuite in violazione del presente comma e del comma 2 sono nulle (3).

*********************************************************************
CONDIZIONI D'USO DEL SOFTWARE DELL'ISTITUTO GEOGRAFICO DE AGOSTINI
*********************************************************************
(c) 1999 Istituto Geografico De Agostini S.p.A., Novara


USI CONSENTITI
È consentito:
1) utilizzare una sola copia del prodotto (di seguito indicato come il "software") su un solo computer;
2) utilizzare il software in rete, purché l'utente abbia acquistato un numero di Licenze pari a quelle utilizzate contemporaneamente in ogni dato momento;
3) nel caso di computer con più terminali usare contemporaneamente il software su un numero di singoli terminali non superiore al numero di copie originali acquistate.

USI VIETATI
L'utente non potrà in alcun modo copiare, alterare, modificare o comunque adattare il software, intentendosi espressamente vietate la decompilazione, il disassemblaggio o l'incorporazione parziale o totale del software in un altro software.

Le leggi italiane e internazionali su copyright e Diritti d'Autore proteggono il contenuto di quest'opera multimediale, sia esso apparato cartografico, testo, suoni o immagini ferme o in movimento.
Tutti i diritti sono riservati. Nessuna parte di questo prodotto può essere riprodotta, memorizzata o trasmessa in alcuna forma e con alcun mezzo: elettronico, meccanico, in fotocopia, in disco o in altro modo, compresi cinema, radio, televisione, reti telematiche, senza autorizzazione dell'Editore.

L'utente non potrà prestare, né cedere in locazione o comunque a terzi a qualsiasi altro titolo l'uso del software o di copia di esso; il software potrà essere trasferito a terzi solo se completo della documentazione dei supporti ottici originali, e a condizione che il trasferente non ne trattenga alcuna copia. L'utente non potrà fare copie del software. Ove l'utente desideri utilizzare il software su computer diverso da quello su cui lo stesso è installato, prima di installarlo su tale secondo computer dovrà procedere alla rimozione del software dal computer su cui era stato precedentemente installato.

DIRITTI
Tutti i diritti relativi al software e alla documentazione accessoria (manuali, etc.) sono di titolarità dell'Istituto Geografico De Agostini o dei suoi fornitori e sono protetti dalla legge sul diritto d'autore, dalle altre legislazioni applicabili in materia e da norme di trattati internazionali. Qualsiasi violazione dei diritti dell'Istituto Geografico De Agostini o delle sue danti causa può dar luogo alla applicazione di sanzioni penali e civili. L'Istituto Geografico De Agostini si riserva tutti i diritti non espressamente concessi in base alle presenti condizioni.

GARANZIA
L'Isituto Geografico De Agostini garantisce che il software è sostanzialmente conforme a quanto descritto nella documentazione allegata. L'Istituto Geografico De Agostini garantisce inoltre che i supporti ottici sui quali il prodotto viene distribuito, nonché la documentazione relativa, sono esenti da vizi di produzione o nei materiali utilizzati. L'Istituto Geografico De Agostini si impegna a sostituire gratuitamente i supporti ottici o la documentazione eventualmente difettosi, dietro restituzione del materiale difettoso all'Istituto Geografico De Agostini entro 90 giorni dalla data di acquisto unitamente alla fattura o alla prova di acquisto attestante il pagamento. Qualora l'Istituto Geografico De Agostini non sia in grado di sostitutire il materiale difettoso, provvederà a rifondere l'acquirente della spesa sostenuta per l'acquisto del prodotto. Quelli che precedono sono gli unici rimedi esperibili in base alla presente garanzia.

Eccetto quanto qui specificamente precisato, L'Isituto Geografico De Agostini non garantisce, né espressamente né implicitamente, la qualità, le prestazioni, la commerciabilità o l'idoneità a scopi particolari del software e della documentazione allegata.

La garanzia stabilita precedentemente è esclusiva e prevale su qualsiasi altra garanzia, orale o scritta, espressa o implicita.

Nessun venditore dell'Istituto Geografico De Agostini, o suo distributore, agente o impiegato, è autorizzato a modificare o aggiungere alcunché alla presente garanzia per conto dell'Istituto Geografico De Agostini.

LIMITAZIONE DI RESPONSABILITÀ
In nessun caso l'Istituto Geografico De Agostini sarà responsabile per qualsiasi danno diretto, indiretto, particolare, accidentale o consequenziale derivante dall'uso o dall'imperizia da parte dell'utente nell'uso del software o della documentazione anche qualora l'Istituto Geografico De Agostini o un legale rappresentante della stessa sia stato informato della possibilità di tali danni.

In nessun caso l'Istituto Geografico De Agostini sarà responsabile per qualsiasi errore o imprecisione del contenuto.

In nessun caso la responsabilità dell'Istituto Geografico De Agostini potrà eccedere l'ammontare della somma pagata dall'utente per il prodotto.

VARIE
Le presenti condizioni sono soggette alla legge italiana; per ogni controversia sarà esclusivamente competente il Foro di Novara.

Ove qualunque disposizione del presente Accordo dovesse risultare illecita, invalida o inefficace, tale disposizione verrà stralciata da questo Accordo e non pregiudicherà la validità ed efficacia di tutte le disposizioni.

Per qualsiasi informazione relativa al presente contratto scrivere a:

Istituto Geografico De Agostini
Via Giovanni da Verrazano, 15
28100 Novara




------------------------------------------------------------------------------------------
(c) 1999 Istituto Geografico De Agostini S.p.A., Novara

 

LEGGENDO IL CONTRATTO CHE LA DEAGOSTINI CI COSTRINGE AD ACCETTARE IN QUANTO ALTRIMENTI NON POTREMMO INSTALLARE IL PRODOTTO POSSIAMO INTRAVEDERE IL SEGUENTE MESSAGGIO:

L'utente non potrà in alcun modo copiare, alterare, modificare o comunque adattare il software, intentendosi espressamente vietate la decompilazione, il disassemblaggio o l'incorporazione parziale o totale del software in un altro software.

DA QUANTO HO POTUTO CAPIRE INVECE DALL'ART. DEL C.C. IO HO IL DIRITTO DI DISASSEMBLARE IL SOFTWARE PER CAPIRNE IL FUNZIONAMENTO.

IL CITTADINO ONESTO SI VEDE NEGATO DA QUESTO CONTRATTO MOLTI DEI SUOI DIRITTI. IL CODICE CIVILE ITALIANO PREVEDE CHE L'ACQUIRENTE POSSA FARE UNA COPIA DEL PRODOTTO LEGALMENTE ACQUISTATO PER IL NORMALE UTILIZZO, MENTRE LA DEAGOSTINI MULTIMEDIA NEGA ATTRAVERSO L'USO DI SISTEMI DI PROTEZIONE QUESTO DIRITTO AL CITTADINO CHE SI VEDE COSTRETTO A RICORRERE A QUESTI MEZZI PER FARSI UNA BENEDETTA COPIA DEL PRODOTTO ALTRIMENTI SE PRESTO L'ENCICLOPEDIA A QUALCUNO SONO CAPACI DI ROVINARMI I CD E LI DEVO RIEMPIERE DI SCHIAFFI, IDEM VALE PER I BAMBINI DI 3 ANNI CHE NON STANNO LONTANI DAL PC DEL PAPA' CHE POI SI INCAZZA E LI FA VOLARE DALLA FINESTRA!

QUEL CONTRATTO E' UNO SCHIFO! LE CLAUSOLE NON SONO VALIDE! ALMENO SECONDO QUANTO DICE IL DIRITTO COMMERCIALE CHE HO STUDIATO!


 
UIC's page of reverse engineering, scegli dove andare:
In galera ?? Dhe hi hi NdQue :)

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

UIC