--==>> [Lesson Information] <<==--

 >DudeZ Cracking TUTORiAL  >Lesson #1

-==[What]===

 > WinPatch v1.20 - Artistry Inc.  
 > www.artistry.com/products/winpatch/

-==[Toolz]==

 > SoftIze v3.24 - THE debugger
 > WinDasm32 v8.93
 > ...a brain ;-D

for more information: Dudez@freemail.it


Bene bene, animali affamati di shareware e freeware, questo non	Φ il mio primo tut, a maggior ragione spero
che capiate tutto, ma tanto lo so che siete bravi quando volete... In realtα, avrei dovuto scriverne un
altro, ma oggi mi son trovato a kazzeggiare con il mio fido S-Ize (mi piace chiamarlo cos∞...) e... guardate
un po' cosa ho trovato per voi... un fantastico programmino, veramente la massima espressione della
sicurezza in fatto di "Registration Password"...AHAHAH!! Alla Artistry si sono spaccati la testa per cercare
di fare un algoritmo 'da paura', ma non hanno pensato che qualcuno avrebbe rovistato in memoria... bhe..
tutto questo per dirvi che il programma in questione Φ stato da noi battezzato:

	
    MOST STUPID PROTECTION OF THE YEAR 1998!
 Example Of An Incredibly Stupid Protection Scheme
 
       MOST STUPID PROTECTION AWARD
	        WON BY
	     WinPatch v1.20

AHAHAH!! Bhe... leggete e ve ne renderete subito conto!

WinPatch, lo dice il nome stesso, altro non Φ che una simpatica applicazione per costruire i propri patch:
il suo lavoro consiste nel creare un patcher sotto WinZoz (c) in modo da aggiornare file/dir da noi scelti.
La versione shareware consente la creazione come la versione registrata, ma differisce per i classici nag
screen che sinceramente stanno un po' sulle balle a tutti, o no?!?
OK, si parte!!!
Installate WinPatch (WP d'ora in avanti...ok?) e lanciatelo: noterete che razza di serie di nag-screen che
si sono preoccupati di metterci... poveretti ;-D
Ora andate sul pulsante "About..." e premete "Register..." appariranno tre edit-box dove inserire le vostre
informazioni e rispettivamente NAME, REGISTRATION ID ed ORGANIZATION...Inserite quello che volete a vostro
piacimento, ma ricordate che il 1░ ed il 3░ edit-box dovranno contenere ALMENO 6 caratteri, ma tanto ve lo
dice...
Fatto?!
Perfetto.. ora CTRL-D ed ecco la mitica schermata di S-Ize: il vostro scopo ora Φ quello di brekkare il
bastardello prima che vi dica "Serial Wrong" o menate simili, in maniera da trovare il punto in cui il
vostro codice verrα confrontato con quello sbagliato...
Siccome questo Φ un TUT vi dir≥ la chiamata API, e cioΦ la GetWindowText (AHAHH!!) e quindi nella soft-ize
console scriverete BPX GETWINDOWTEXT.
Perfetto... premete F5 e vedrete che ritornerα il controllo in S-Ize, ancora una volta F5 e di nuovo il
controllo... che succede?! Ora WP sta estraendo i nostri dati dagli edit.boxes (3, ricordate?!). BENE!
Ora tocca all'ultimo e procedete premendo F11 per eseguire la API, e premete F12 per uscire dalle varie CALL
fino a ritornare al MAiN PROGRAM, ovvero WP (un po' di gloria anche a lui, porello!)
Siamo giunti qui:



:00412EC0 E8D7AE0100              call 0042DD9C
:00412EC5 8B8618010000            mov eax, dword ptr [esi+00000118]	<--- QUi!
:00412ECB 8DAE18010000            lea ebp, dword ptr [esi+00000118]
:00412ED1 8B40F8                  mov eax, dword ptr [eax-08]
:00412ED4 83F806                  cmp eax, 00000006
:00412ED7 7D2E                    jge 00412F07
:00412ED9 6A10                    push 00000010


Come potete facilmente notare, la CMP a :00412ED4 controlla di volta in volta se NAME ed ORGANIZATION sono
lunghi almento 6 caratteri. WOW!
Procedendo nell'analisi del nostro WP, vedremo che ci saranno mooolti PUSH del tipo PUSH 004CAAA6 etc.etc.
Ora vediamo di che si tratta...
Uscite da S-Ize e decompilate l'eseguibile con WDAsm32 non andate subito nelle 'String References', ma
piuttosto imparate sin da subito ad osservare bene il codice. Andate alla locazione 00412EC5 e guardatevi
in giro: non notate nulla di particolare?! Io lo ho notato con S-Ize, che Φ pi∙ difficile, in WDAsm dovrebbe
essere molto piu' semplice...


** RiCHiAMi >ASM< **************************************************************************************
** L'istruzione PUSH altro non fa che richiamare dallo stack dei valori, in questo caso corrispondo a **
** degli indirizzi relativi a stringhe caricate in memoria da WP stesso				      **
********************************************************************************************************


Alcune righe dopo lo spezzone di codice, noterete che il programma Φ zeppo di PUSH xxxxxxxx, bhe?! Che
cosa fa il nostro caro WP, controlla che il nome inserito NON corrisponda a quello di personaggi 'molto'
famosi, del calibro di...

* Possible StringData Ref from Data Obj ->"PHROZ"
                                  |
:00412F48 6850CB4400              push 0044CB50
:00412F4D 8D4C2424                lea ecx, dword ptr [esp+24]
:00412F51 A324054500              mov dword ptr [00450524], eax
:00412F56 E83530FFFF              call 00405F90
:00412F5B 83CBFF                  or ebx, FFFFFFFF
:00412F5E 3BC3                    cmp eax, ebx
:00412F60 7424                    je 00412F86
:00412F62 6A10                    push 00000010


Capito?! Controlla che il nome inserito non sia quello di un crackers: molto probabilmente erano consapevoli
del fatto che erano giα stati trovati serial per il loro progz. ed hanno pensato di inserire una chicca tipo
questa (WOW!) anzichΦ meditare sul loro schifo di protezione...AHAH!
....e volete leggere il messaggino che fanno apparire all'inserimento di PHROZEN?! Guardate qui...

* Possible StringData Ref from Data Obj ->"You sick, demented soul.  Thiefs "
                                        ->"are not tolerated!"
                                  |
:00412F69 681CCB4400              push 0044CB1C
:00412F6E 8BCE                    mov ecx, esi
:00412F70 E8F7A40100              call 0042D46C
:00412F75 8D4E5C                  lea ecx, dword ptr [esi+5C]
:00412F78 E8DFC70100              call 0042F75C
:00412F7D 895C242C                mov dword ptr [esp+2C], ebx
:00412F81 E9D5020000              jmp 0041325B


....poveri illusi...pensano di fermare l'inarrestabile! ;-))))

Continuate la vostra folle ricerca e ben presto incontrerete String References tipo queste...


* Possible StringData Ref from Data Obj ->"Invalid Registration ID!"
                                  |
[...]

* Possible StringData Ref from Data Obj ->"Name must be at least 6 characters."

[...]

* Possible StringData Ref from Data Obj ->"Registration ID name is required."
                                  |
[...]

* Possible StringData Ref from Data Obj ->"L&D-0611"
                                  |
[...]


Sono sicuro (!) che noterete anche cose simili...

* Possible StringData Ref from Data Obj ->"UIS-2200"

* Possible StringData Ref from Data Obj ->"Unisys Corporation"

* Possible StringData Ref from Data Obj ->"Art+Debby+Daisy+Lucy!@"

Che bello!!! Il nostro volo per la registrazione!!
Segnatevi il PUSH che richiama la stringa 'UIS-2200' ed anche quella che richiama "Art+Debby+Daisy+Lucy!@",
vi serviranno tra poco.
Viste queste cose, si potrebbe pensare di andare in S-Ize, andare a beccare il PUSH che carica l'indirizzo
relativo ad una di queste stringhe e vederne l'eventuale numero di serie...
Facciamolo! Non dimenticate di salvare il decompilato in WDAsm ed uscite, caricate di nuovo WP e brekkate
su GetWindowText (era meglio se vi settavate un breakpoint in qualche lokazione, ma cos∞ fate pratika ;-D).
Bene... arrivate qui:

:00412EC0 E8D7AE0100              call 0042DD9C
:00412EC5 8B8618010000            mov eax, dword ptr [esi+00000118]	<--- QUi!
:00412ECB 8DAE18010000            lea ebp, dword ptr [esi+00000118]
:00412ED1 8B40F8                  mov eax, dword ptr [eax-08]
:00412ED4 83F806                  cmp eax, 00000006
:00412ED7 7D2E                    jge 00412F07
:00412ED9 6A10                    push 00000010


praticamente, al luogo di partenza. Ora sapete sicuramente che piu' avanti, nei meandri del codice,
troverete dei PUSH, del tipo -mostrati sopra- e adesso Φ giunto il momento di cercarli!
Correte a prendere il foglietto di carta, fazzoletto, klenex, o qualsiasi cosa porosa su cui avete appuntato
il vostro PUSH e cercatelo nel codice. Se cercherete "push 0044CA6C" allora cercate il pezzo di codice
simile a questo:

* Possible StringData Ref from Data Obj ->"UIS-2200"
                                  |
:00413157 686CCA4400              push 0044CA6C			<-- di chi Φ questo!??
:0041315C 50                      push eax
:0041315D E844930000              call 0041C4A6				
:00413162 83C408                  add esp, 00000008
:00413165 85C0                    test eax, eax				       ///	
:00413167 7522                    jne 0041318B				      (O -)
:00413169 8B4500                  mov eax, dword ptr [ebp+00]		...oOOo.(o).oOOo..
										
Fatto?! BENE!
Ed ora imparerete anche a guardare nella DATA WINDOW di Soft-iCe (OH! Almeno una volta ci voleva...), cosa
che vi sarα molto utile anche nei crack successivi.
Mmmm se non la avete ancora abilitata, WD, et voilα!
Bene... ora in console scrivete cos∞:

d 44CA6C

....e nella finestra comparirα la magica stringa che abbiamo visto prima in WDAsm! Che significa?!
Riesaminiamo il codice di poco fa...

* Possible StringData Ref from Data Obj ->"UIS-2200"
                                  |
:00413157 686CCA4400              push 0044CA6C			<-- indirizzo stringa (1)
:0041315C 50                      push eax			<-- indirizzo del nostro serial (2)
:0041315D E844930000              call 0041C4A6			<-- verifica se 1=2, se s∞ esegue uno
:00413162 83C408                  add esp, 00000008		    XOR su EAX e lo mette a 0, altrimenti
:00413165 85C0                    test eax, eax			    EAX assumerα altri valori...
:00413167 7522                    jne 0041318B		          WOW!! Un saltino Carino!

Noterete come me la prima volta che, sfogliando le 'pagine' di memoria, c'Φ una stringa che dice:

* Possible StringData Ref from Data Obj ->"The PIN is: "

Azzo!! STRANO! Quando sbagliamo codice non ci appare! Ma vuoi vedere che...(iniziate a capire?!)
Procedete cos∞...ora rieseguite WP e questa volta cercherete la stringa "Art+Debby+Daisy+Lucy!@"
il PUSH di riferimento Φ:

:004130E3 6888CA4400              PUSH 0044CA88

....l'indirizzo dovrebbe essere simile al mio... altrimenti tiratevi su il disassemblato e prendete il
l'indirizzo giusto (il vostro...;-D).
Fatto?! Bene...
Noterete che nella DATA WINDOW ci sarα la scritta *PIN Number* come prima... ora uscite da Soft-Ize
e ricaricate dall'inizio il WP. Ora inserite il vostro nome nel NAME field, qlc. a caso per l'ORGANIZATION
field e ricordate di digitare almento 6 caratteri.
Ora viene il bello: come SERiAL inserite la stringa "Art+Debby+Daisy+Lucy!@" e vedrete che una finestrella
pop-up apparirα e gentilmente vi fornirα l'ESATTO NUMERO di registrazione per i vostri rispettivi NAME ed
ORGANIZATION fields.

Non ho provato ad inserire anche le altre "String References", ma provateci voi e fatemi sapere..
Purtroppo il tempo Φ quello che Φ, ma torner≥ alla carica con il crack per NFS2SE ed i KEYGEN-TUTORIAL...
....aspettatemi!

ByetZ

	DudeZ [NRG]

Ringrazio in modo particolare

- Kill3X
- GEnius

Per aver creato un VERO sito di cracking e per aver scritto IL manuale di Soft-Ize in maniera eccelsa.

Dudez@Freemail.it