--==>> [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