PIXEL3D
How To Crack


17/07/2000

by "Pincopall"

 
 

UIC's Home Page

Published by Quequero

Anche nel cracking come nella vita: le parole ispirano...

Pinco, mi hai presentato un form che era un puttanaio :) cmq non fa niente, il tute è stato chiaro, niente di eccessivamente difficile, ma ora basta con i target facili, alziamo un po' il nostro livello e cimentiamoci con qualcosa di più difficile :)

 

...gli esempi trascinano
UIC's form
E-mail: [email protected]
UIC's form

Difficoltà

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

 

Facciamoci registrare dal programma, facendogli accettare qualsiasi seriale.


 

Introduzione

Questo programma è stato il primo che ho "cercato" di reversare o di crakkare nel "lontano" Gennaio 1999 quando ancora non sapevo niente della nobile arte (non è che ora sia un mago eh :-)) Ho dunque deciso di cimentarmici ed ecco qua,l'ho spuntata io.

Tools usati

SoftIce
HexWorkShop <====l'editor esadecimale, io ho usato questo, ma potete usare quelo che più vi piace
W32Dasm8.93

URL o FTP del programma

Beh io ho trovato la versione trial a 30 gg sulla rivista "Il mio computer" del Giugno 1997, ahò non è pubblicità occulta eh!!,comunque se lo volete ordinare dovete chiamare il numero 612-702-0811, U.S. :-)

Notizie sul programma 

Il programma in questione è un programma di grafica 3D, molto piccolo ma ben potente e molto ben fatto secondo il mio modesto parere. La versione trial come ho detto su dava libero uso per 30 gg, poi il programma veniva a mancare di alcune funzioni, o meglio di tutte quelle importanti: Open, Save, ecc.. insomma diventava inutilizzabile (ovviamente, sennò che staremmo quì a fà?).

Essay

Dunque si parte, lanciamo il programma, premiamo help e poi "purchase Pixel 3D..". A questo punto compare il box in cui inserire il nostro seriale che viene calcolato secondo il codice sovrastante il box.
Dunque io inserisco un numero a caso ,per esempio "22442244", clikko ok e mi compare, ovviamente, la beggar-off dicendomi : "you have entered an incorrect activation code" bene, fai il furbillo eh? e allora io apro WDasm e ,dopo aver premuto su String Data Reference (dal menu refs) cerco tal frase.
Una volta trovata la stringa,per far prima potevo anche cercarla con "Find Text", ci clikko sopra
e mi appare questa parte di codice:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041946F(C)<=======dunque è qui il salto che ci fa andare al messaggio di errore!
|
:0041966D 83F802 cmp eax, 00000002 <=====confronta eax con 2 e,se non è uguale salta
:00419670 752C jne 0041969E alla beggar off "The purchasing process has been cancelled"

* Possible StringData Ref from Data Obj ->"You have entered an incorrect "
->"activation code."
|
:00419672 6894EA4E00 push 004EEA94
:00419677 8D85E0F9FFFF lea eax, dword ptr [ebp+FFFFF9E0]
:0041967D 50 push eax
:0041967E E83D640C00 call 004DFAC0
:00419683 83C408 add esp, 00000008
:00419686 8D85E0F9FFFF lea eax, dword ptr [ebp+FFFFF9E0]
:0041968C 50 push eax
:0041968D E83E3F0500 call 0046D5D0
:00419692 83C404 add esp, 00000004
:00419695 33C0 xor eax, eax<====azzera il valore di eax
:00419697 5F pop edi
:00419698 5E pop esi
:00419699 5B pop ebx
:0041969A 8BE5 mov esp, ebp
:0041969C 5D pop ebp
:0041969D C3 ret

Dunque andiamo all'indirizzo 0041946F e troviamo:
 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00419456(C)
|
:0041945F A190E94E00 mov eax, dword ptr [004EE990]
:00419464 85C0 test eax, eax
:00419466 0F8432020000 je 0041969E<==se eax=eax allora questo salto ci fa andare al                                   messaggio "the purchasing process ecc...."
:0041946C 83F801 cmp eax, 00000001
:0041946F 0F85F8010000 jne 0041966D<===questo è il salto che ci manda alla beggar off
:00419475 68E0AB4F00 push 004FABE0  se eax è diverso da 1
:0041947A E8E1690C00 call 004DFE60
:0041947F 83C404 add esp, 00000004
:00419482 85C0 test eax, eax
:00419484 7509 jne 0041948F<====bene bene ,guardiamo un po' questo saltino dove ci manda!
:00419486 33C0 xor eax, eax<=====riazzera il valore contenuto in eax
:00419488 5F pop edi
:00419489 5E pop esi
:0041948A 5B pop ebx se la funzione a 00419484 non salta allora appare la
:0041948B 8BE5 mov esp, ebp beggar off come faceva di sopra.
:0041948D 5D pop ebp
:0041948E C3 ret
Ecco dove ci porta il salto a 00419484:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00419484(C)
|
* Possible StringData Ref from Data Obj ->"REGISTERED" <=====ci porta direttamente alla versione registrata del prog.
|
:0041948F 6894E94E00 push 004EE994
:00419494 8D85C8FDFFFF lea eax, dword ptr [ebp+FFFFFDC8]
:0041949A 50 push eax
:0041949B E820660C00 call 004DFAC0
:004194A0 83C408 add esp, 00000008
:004194A3 8D85D8FDFFFF lea eax, dword ptr [ebp+FFFFFDD8]
:004194A9 6810AB4F00 push 004FAB10
:004194AE 50 push eax
:004194AF E80C660C00 call 004DFAC0

.............

Dunque non ci resta altro da fare che andare a modificare quel jnz 0041966D e quel jne 0041968F, ora mentre però è più facile da cambiare quest'ultimo,si tratta infatti di cambiare quel 7509 con un 7409 in modo da farlo diventare un jz,per il primo le cose si fanno per così dire un pò più complicate,almeno per un newbies,od almeno per un newbies quale ero io,infatti come vediamo non ci sono solo due byte,ma ben 12 ovvero 0F|85|F8|01|00|00|, per vedere cosa si deve sostituire poi nell'editor esadecimale a questi bytes, devo usare il SIce.

Dunque ripartiamo facendo partire il prog, e andando nel box della registrazione, qui mettiamo il nostro bel numerino "22442244" e prima di premere OK, premiamo Ctrl+d in modo da far apparire il Sice,qui mettiamo un bpx (breakpoint on execution) su getwindowtexta, quindi premiamo F5 per uscire da SoftIce e premiamo Ok,a questo punto SIce popperà, e noi,premiamo F12 finchè non vediamo il nome Pixel3D nella riga verde in basso , cancelliamo tutti i bp con bc* e intanto ci andiamo a modificare quel salto da 7509 a 7409 scrivendo "a 015F:00419484 " ma 015F solo nel mio caso eh!, per voi sarà diverso,e scriviamo jz 0041968F, ora andiamo a modificare l'altro salto, dunque scriviamo "a 015F:0041946F" e scriviamo jz 0041966D, e vediamo che apparirà al posto di 0F85 ,751E, e che sotto tale jump verranno a scriversi un altro nugolo di funzioni, bene, queste vanno tutte noppate fino a quella all'indirizzo 00419475 esclusa, e per nopparle si deve ovviamente scrivere "a l'indirizzo" e nop. Alla fine i nop saranno 4, come vedremo,uscendo dal SIce, il programma si riterrà registrato e tutte le funzioni della versione registrata sarannoa nostra portata di mano.

Poichè però le modifiche fatte con il SIce, così come per gli altri debugger,valgono solo per una volta, per rendere permanenti le nostre modifiche dovremmo andarle a mettere nell'editor esadecimale.Dunque più "professionalmente " potremmo trovare le parti da modificare facendo nell'editor, Goto e scrivendo l'offset che ci siamo segnati mentre eravamo nel WDasm e che ci appariva,quando eravamo sulla stgringa che ci interessava in basso a destra; oppure potremmo cercare usando Find Text e cercando per esempio "0F85F8010000". Una volta trovata tale sequenza non ci resta che sostituirla con 751E90909090, poco più in là poi vediamo un familiare 7509, e quello lo cambiamo com 7409. Salviamo ed ecco fatto,abbiamo un programma che si registra con qualsiasi seriale,tranne che con quello giusto, e che ci da tutte le funzioni della versione registrata.

Un altro modo di crakkarlo, poteva essere il non far scadere mai il tempo per il nostro programma completo, ma delle due strade ho scelto quella che vi ho mostrato sopra,chissà,magari un'altra volta mi ci metto e provo quella strada.

Ciauzzzz e alla prossima (se mai ci sarà ('azz tocchiamoci!!))

Pincopall

P.s. Vorrei chiudere con una frase di +ORC, che non ho messo su perkè non mi ci stava:

"If you give a man a crack he'll be hungry again tomorrow, but if you teach him how to crack, he'll never be hungry again." +ORC

Note finali

Spero di essere stato chiaro, comunque se ci sono dei problemi la mia e-mail la conoscete. Devo dire che mi si potrebbe imputare di essere stato troppo lungo nella parte sul SoftIce,ma se lo ho fatto è perchè quando ero totally newbie ,speravo di trovare un tutorial fatto bene come questo ,'azz come sono modesto,no no a parte gli scherzi,mi sono dilungato per rendere più chiari possibile i concetti che ho esposto a tutti quelli che li leggeranno ai quali,come succedeva a me, potrebbero sorgere delle domande.

Per concludere vorrei ringraziare tutti coloro dai quali ho appreso,apprendo ed apprenderò sempre di più in questi campi,quindi tutti i componenti della UIC tra i quali Quequero,TiN_MaN, [Alt_255],Phobos,_Golem_,cod,AndreaGeddon,e tutti insomma.

Altro ringraziamento va a Nio e Bebos per il supporto morale che non mi hanno dato e che quindi mi ha dato un ulteriore spinta.

Disclaimer

Vorrei ricordare che il software va comprato e  non rubato, dovete registrare il vostro prodotto dopo il periodo di valutazione. Non mi ritengo responsabile per eventuali danni causati al vostro computer determinati dall'uso improprio di questo tutorial. Questo documento è stato scritto per invogliare il consumatore a registrare legalmente i propri programmi, e non a fargli fare uso dei tantissimi file crack presenti in rete, infatti tale documento aiuta a comprendere lo sforzo immane che ogni singolo programmatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili.
Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly.
Capitoooooooo????? Bhè credo di si ;)))) 

UIC's page of reverse engineering, scegli dove andare:
Home   Anonimato   Assembly    ContactMe   CrackMe   Forum   Iscrizione
Lezioni    Links   Linux   NewBies   News   Playstation
Search   Tools   Tutorial   UIC Faq   XXX Page
UIC