15
Tutorial N°1 9-2-1999 Cos'è il cracking? Con questa parola intendiamo l'arte del bypassare o disattivare i sistemi di protezione all'interno dei comuni shareware. Per intenderci faccio un piccolo esempio: In edicola compro un cd con dei programmi, ne installo uno a caso e noto subito che in alto c'è scritto: "Questo programma è una versione shareware". Cosa significherà questo oscuro messaggio? Bene ecco la risposta, il programma probabilmente avrà alcune funzioni disabilitate oppure ci porrà un limite di tempo entro il quale dovremmo pagare un contributo al produttore per riceverne una versione completa, infatti gli shareware sono nati per far provare al potenziale acquirente il nostro prodotto e, se esso vorrà poi utilizzarlo a tempo indeterminato dovrà pagare per ricevere un numero seriale che gli consentirà di disabilitare il limite di tempo (in genere 30, 45 o 90 giorni) oppure di abilitare tutte le funzioni che prima non erano disponibili. Le software house per velicizzare l'utilizzo dei propri prodotti spesso consentono di registrare il programma in linea, ma vediamo come avviene questo precesso, spesso si deve andare nel menu *Help* e poi *Register*, a volte il box di registrazione appare durante l'avvio del programma, a volte è "nascosto" come in gamehack dove si deve premere "ctrl+clic" sul logo "GameHack" per accedervi, oppure altre volte il box non esiste, infatti proprio per questo possiamo dividere i programmi shareware in due categorie ed altre varie sottocategorie, andiamo ad esaminarli: i tipi di shareware si possono dividere in registrabili e non, i registrabili possono essere *sbloccati* tramite un box nel quale và inserito un numero predefinito oppure calcolato in base al nome che inseriamo, o peggio tramite un Key file, ossia un file che la ditta spedisce all'utente e che va messo generalmente nella cartella principale del prog. (per esempio cuteftp cerca al proprio avvio un file chiamato "cuteftp.key" contenente le informazioni criptate dell'utente) quest'ultima soluzione è spesso la più difficile da sopraffare, ma vediamo come si comportano i prog. non registrabili, questa branca di shareware è nata recentemente per il solo motivo di depistare i cracker, infatti, i vari prodotti non forniscono un box di registrazione, ma consentono generalmente l'utilizzo completo del prog. per un determinato periodo di tempo oppure disabilitano alcune funzioni, a volte invece consentono di sfruttare a tempo illimitato il prog. senza disabilitare le funzioni ma riempiendolo di nag-screen (ossia noiosi messaggi che ricordano di pagare la registrazione e cazzi vari...) ce ne sarebbero altri due, nel primo *Verifica del cd-rom" l'eseguibile controlla la sua locazione che deve essere quella del cd originale, nel secondo tipo viene cercata una chiave hardware cioè viene fatto un check su una compente hardware del vostro pc, per esempio l'eseguibile controlla che il numero di serie dell'hard disk sia sempre quello ma come chiave hardware possiamo inrendere anche un dispositivo che si attacca alla porta parallela, poi ne parlerò in un altro tutorial (e saranno dolori...), in linea di massima tutti questi metodi possono essere superati, ne esamineremo con calma la maggior parte dei casi.

La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

  • Upload
    rosguns

  • View
    126

  • Download
    2

Embed Size (px)

DESCRIPTION

e

Citation preview

Page 1: La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

Tutorial N°1 9-2-1999

Cos'è il cracking?

Con questa parola intendiamo l'arte del bypassare o disattivare i sistemi diprotezione all'interno dei comuni shareware. Per intenderci faccio un piccolo esempio: In edicola compro un cd con dei programmi, ne installo uno a caso e noto subitoche in alto c'è scritto: "Questo programma è una versione shareware". Cosa significherà questo oscuro messaggio? Bene ecco la risposta, il programmaprobabilmente avrà alcune funzioni disabilitate oppure ci porrà un limite ditempo entro il quale dovremmo pagare un contributo al produttore per riceverneuna versione completa, infatti gli shareware sono nati per far provare alpotenziale acquirente il nostro prodotto e, se esso vorrà poi utilizzarlo a tempoindeterminato dovrà pagare per ricevere un numero seriale che gli consentirà didisabilitare il limite di tempo (in genere 30, 45 o 90 giorni) oppure di abilitaretutte le funzioni che prima non erano disponibili. Le software house per velicizzare l'utilizzo dei propri prodotti spesso consentonodi registrare il programma in linea, ma vediamo come avviene questo precesso,spesso si deve andare nel menu *Help* e poi *Register*, a volte il box diregistrazione appare durante l'avvio del programma, a volte è "nascosto" come ingamehack dove si deve premere "ctrl+clic" sul logo "GameHack" per accedervi,oppure altre volte il box non esiste, infatti proprio per questo possiamo dividere iprogrammi shareware in due categorie ed altre varie sottocategorie, andiamo adesaminarli: i tipi di shareware si possono dividere in registrabili e non, iregistrabili possono essere *sbloccati* tramite un box nel quale và inserito unnumero predefinito oppure calcolato in base al nome che inseriamo, o peggiotramite un Key file, ossia un file che la ditta spedisce all'utente e che va messogeneralmente nella cartella principale del prog. (per esempio cuteftp cerca alproprio avvio un file chiamato "cuteftp.key" contenente le informazioni criptatedell'utente) quest'ultima soluzione è spesso la più difficile da sopraffare, mavediamo come si comportano i prog. non registrabili, questa branca di sharewareè nata recentemente per il solo motivo di depistare i cracker, infatti, i variprodotti non forniscono un box di registrazione, ma consentono generalmentel'utilizzo completo del prog. per un determinato periodo di tempo oppuredisabilitano alcune funzioni, a volte invece consentono di sfruttare a tempoillimitato il prog. senza disabilitare le funzioni ma riempiendolo di nag-screen(ossia noiosi messaggi che ricordano di pagare la registrazione e cazzi vari...) cene sarebbero altri due, nel primo *Verifica del cd-rom" l'eseguibile controlla lasua locazione che deve essere quella del cd originale, nel secondo tipo vienecercata una chiave hardware cioè viene fatto un check su una compentehardware del vostro pc, per esempio l'eseguibile controlla che il numero di seriedell'hard disk sia sempre quello ma come chiave hardware possiamo inrendereanche un dispositivo che si attacca alla porta parallela, poi ne parlerò in un altrotutorial (e saranno dolori...), in linea di massima tutti questi metodi possonoessere superati, ne esamineremo con calma la maggior parte dei casi.

Di cosa abbiamo bisogno

Per poter crackare un prog abbiamo bisogno di un Debugger, un Disassemblerun un editor esadecimale e volendo un paio di prg come regmon e filemon,vediamo a cosa servono: Il debugger è un po' la finestra sul programma del cracker, è indispensabile, ilmigliore è sicuramente Softice della Numega. La versione che troverete sarà l'ultima cioè la 3.24, un prog del genere serve avedere il codice assembler del programma, se non sapete cosa significhi questaparola dovete far assolutamente riferimento ai tutorial di assembler per poter

Page 2: La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

continuare; comunque il codice è lo scheletro del programma cioè la suastruttura, con questo prg possiamo *navigare* all'interno dello shareware perpoterlo poi crackare. Il disassembler che useremo si chiama W32 Dasm ed è un prg molto simile aldebugger, solo che quest'ultimo ci disassembla (cioè lo converte in assembly) unfile e ci consente di trarne varie informazioni, il metodo di crackare un prg conun disassembler viene definito *passivo* perchè non si può interagiredirettamente con le funzioni del prg. L'editor esadecimale, io uso Hex Workshop, serve per poter vedere il codice,come dice la parola stessa, esadecimale, quest'operazione viene in genereutilizzato per lo sviluppo del file crack, cioè un piccolo eseguibile che serve amodificare quanto basta il prg per renderlo libero dalla protezione. Regmon e Filemon sono invece due utilissimi prg che rispettivamente ciconsentono di vedere ciò che un prg qualunque legge nel registro di windows equali file legge, scrive o cerca. Spero che vi stiate chiedendo il perchè dell'utilitàdi questi due ultimi tools, ebbene eccovi la risposta, spesso uno sharewareinserisce nel registro di windows o in alcuni file delle informazioni di vitaleimportanza come ad esempio i giorni che mancano prima dell'espirazioneoppure le info sulla registrazione, le informazioni del reg. ed i file sono spessonascosti in chissà quale directory e con filemon e regmon possiamo scovarli...;) Se volete ricercandoli o in questo sito o nel web. Scaricate tutti questi prog ed provate ad usarli uno per uno, ricordate solo chesoftice è FONDAMENTALE mentre gli altri potrete prenderli in un secondomomento. Un ultimo avvertimento: fare il cracker non è un'attività TROPPO legale quindicercate di rimanere nell'ombra ed evitare di dire a tutti che vi chiamate PincoPallino, che vivete a Lilliput e che fate il cracker 24 ore al giorno, potrebbeessere molto pericoloso. Potete crackare in casa vostra tutti i programmi che volete al solo scopodidattico, ma non potete diffondere il relativo crack, quindi a buonintenditore..... Arrivederci al prossimo tutorial ;) Quequero

Tutorial N°2 10-2-1999

Page 3: La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

Il nostro primo crack!!!

Eccoci di nuovo qui, in questo secondo tutorial crackeremo il nostroprimo programa, ma quale? Bhè la risposta mi sembra ovvia, crackeremo uno dei nostri tools, cioèHex Workshop 2.54, ma bando alle ciance ed iniziamo.... Avete insallato Softice e Hex Workshop? Se no l'avete fatto alloraprovvedete. Avviate il programma e un nag-screen vi dirà che questa è la prima voltache usate questo prodotto e che deve essere registrato, cliccate su ok evedrete in alto a destra una scritta: "Demonstration version" passatecisopra con il mouse e vedrete che in realtà è un pulsante, bene benecliccateci sopra e un box farà la sua comparsa chiedendovi un serialnumber; questa è la protezione che andremo a rimuovere... Premete ctrl+d e softice popperà sul monitor, come potrete subitoconstatare il mouse non c'è ma è sostituito da un quadratino bianco, sequel quandratino non si muove significa che avete sbagliato a settare laporta di comunicazione durante il setup, riavviate l'installazione ecambiate, tornate di nuovo in Softice (ctrl+d) e gurdatelo attenamente,noterete sicuramente delgli strani simboli e vedrete anche che durantel'esecuzione del debugger non potrete interagire con Windows, la primacosa da fare è ottimizzare la finestra, per farlo potrete scaricare qui ilmio file "winice.dat" e sostituirlo al vostro, oppure potrete scriveresempre in softice questi comandi: line 60 invio wl invio wc 45 invio code on invio wr invio faults off invio Se non vorrete scrivere tutto questo ogni volta che riavviate windows viconsiglio di scaricare il mio file oppure di modificare il vostro, sulll'ottimizzazione e l'uso di Softice dedicherò il mio prossimo tutorial. Torniamo a noi, come si inizia a sbirciare il codice? E' semplicissimo, per prima cosa dovete identificare un possibile puntod'attacco, ma noi questo l'abbiamo già fatto (mi riferisco al box chechiede il serial number), poi dovete scoprire quale funzione utilizza ilprg per prelevare il testo dall'edit box, cercherò di essere più chiaro;allora, quando scriviamo un numero e premiamo "Register" il programmavà a "guardare" ciò che è stato scritto, confronta quel risultato conquello reale e se sono uguali procede alla registrazione, per carpire iltesto si usa in genere una funzione chiamata "GetWindowTextA", la "A"finale stà ad indicare che la funzione presa in considerazione è quella a32-bit e non a 16. Come si fà a sapere se un prog. usa una funzione oppure un'altra? Per scoprirlo possiamo fare due cose: andare a tentoni oppure cliccarecol pulsante destro del topo sul file e andare su anteprima (se non c'è sideve installare e si trova sul cd di windows), apparirà tutta una listadelle funzioni che utilizza. Ma andiamo a registrare il prg, premiamo ctrl+d (da ora in poi scriverò^D) e scriviamo: bpx getwindowtexta. *** Ma cosa significa questo oscuro comando? Bhè vediamolo: bpx significa breakpoint on execution e getwindowtextaè la funzione sulla quale vogliamo brekkare, in parole povere nonfacciamo altro che chiedere a Sice di generare un'interruzione (che faràapparire la schermata del debugger) quando Hex-Workshop giunge suquella funzione, in pratica il breakpoint è una "trappola" che useremo

Page 4: La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

praticamente sempre per fare ingresso nel codice di qualunque prg. Tanto per capirci possiamo dire che spesso useremo l'istruzionebpxmessageboxA per far poppare Sice quando ci viene mandato il box consu scritto: Insert the correct password.....The number is incorrectecc..... Se avete problemi o non avete capito qualcosa scrivetemi ed iocercherò di aiutarvi. *** Premiamo invio e poi scriviamo X oppure premiamo F5 per tornare awin. A questo punto utilizziamo un cosidetto dummy number, cioè unnumero che utilzzeremo spesso come "fake number", io uso sempre666111666, inseriamo quindi questo numero nell box e premiamo ok! Come speravamo vediamo Softice che fa la sua comparsa, adesso cisaranno una serie di numeri e scritte probabilmente incomprensibili,non vi preoccupate perchè presto impareremo a conoscerle. Premiamo una volta F11 (serve per tornare da una chiamata ad unaroutine), 3 volte F12 (questo comando esegue una funzione finchè nontrova l'istruzione "RET" che significa return),, 22 volte F10 (questo serveper fare single-step in una funzione, in pratica con F10 si procede passopasso nel codice) e scriviamo: r fl z. *** Riassumiamo il tutto: F12: Esegue una funzione finchè non trova un'istruzione di ritorno F11: Torna da una chiamata alla rispettiva routine F10: Esegue ogni singola istruzione, in questo modo procediamo passopasso nel codice. F8: Esegue semplicemente un'istruzione, viene in genere usato perseguire qualche chiamata (CALL) importante. Una volta che saremo nel codice premeremo quasi sempre F11 comeprimo tasto e poi a seconda dei casi utilizzeremo F12 e F10. F5: Torna a Winzoz. r fl z: Questa istruzione è parecchio importante ed userò un breveesempio per spiegarla: quando la barra bianca del debugger passa su unjump (sono tutti jump quelle istruzioni che iniziano con la "J" comeJMP, JNE, JAE, JB, JC...) sulla destra appare una scritta del tipo:"JUMP" oppure "NO JUMP", bene, con questa istruzione cambiamo ilvalore del flag Z, cioè trasformiamo la scritta "JUMP" in "NO JUMP" eviceversa, tutto ciò è molto utile nel caso che ci sia un salto dopoun'istruzione che controlla l'esattezza di un numero seriale (cioè lafunzione salta se il seriale è esatto oppure non salta e ci manda ilmessaggio di errore), infatti con r fl z potremmo costringere la funzionea saltare e quindi anche a registrare il prg....;)) *** Premiamo F5 (scriviamo un user name e una company a piacere) epossiamo felicemente constatare che il programma è stato registrato. Adesso vi spiegherò il codice che avete visto cosa significava. Dopo aver premuto tutti quei tasti vi siete trovati davanti a delle righesimili a queste: Attenzione i numeri prima dei due punti non sono stati inseriti poichè ivostri saranno sicuramente diversi. Ricordate anche che le istruzioni JZ(jump if zero) e JE (jump if equal) oppure JNZ (jump if not zero) e JNE(jump if not equal) sono equivalenti e che il W32DASM sostituiscesempre JZ con JE e JNZ con JNE. # significa: "numero" quindi #3 è = a "numero 3" :0042625B E8CC4E0200 call 0044B12C

Page 5: La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

:00426260 8B8DFCFEFFFF mov ecx, dword ptr [ebp+FFFFFEFC] :00426266 83C164 add ecx, 00000064 :00426269 E812BAFDFF call 00401C80 :0042626E 50 push eax :0042626F 8D45DC lea eax, dword ptr [ebp-24] :00426272 50 push eax :00426273 E8C82D0100 call 00439040 :00426278 83C408 add esp, 00000008 :0042627B 68E8F74700 push 0047F7E8 :00426280 8D45DC lea eax, dword ptr [ebp-24] :00426283 50 push eax :00426284 E867450100 call 0043A7F0 :00426289 83C408 add esp, 00000008 :0042628C 85C0 test eax, eax<--- controlla il # vero conil nostro :0042628E 0F8414000000 je 004262B3<-- se il # è vero salta a004262A8 (ricordate l'esempio dell'istruzione "r fl z" ?) :00426294 8D45DC lea eax, dword ptr [ebp-24] :00426297 50 push eax :00426298 E823110100 call 004373C0 :0042629D 83C404 add esp, 00000004 :004262A0 8945EC mov dword ptr [ebp-14], eax :004262A3 E907000000 jmp 004262AF :004262AF 837DEC00 cmp dword ptr [ebp-14], 00000000 :004262B3 0F8479000000 je 00426332<--ricontrollalo e registra severo :004262B9 8B8DFCFEFFFF mov ecx, dword ptr [ebp+FFFFFEFC] :004262BF 83C164 add ecx, 00000064 Bene bene, vediamo cosa abbiamo fatto: immaginate un omino che dimestiere fa il corridore, qualcuno (la funzione) gli dice dove deveandare, gli dà un foglio con un numero (666111666) e gli dice anche diseguire le indicazioni, l'omino parte e trova una lettera, la apre econtrolla (test eax, eax) il suo numero con quello della busta, unindicazione (je 004262B3) gli dice di saltare ad un altro pezzo di stradase il suo numero è uguale a quello della busta, nel nostro caso l'ominocontinua a correre finchè non incontra un'altra indicazione (cmp dwordptr....., 00000000) che gli dice dice di controllare "SE" il suo numero èsbagliato, se non lo è un'altra indicazione (je 00426332) gli comunicache può arrivare al traguardo usando qualche scorciatoia (va bene cosìaLoNg3x? ;) ), questa spiegazione credo sia stata più facile da capire. Potremmo riassumere la storia dell'omino in questo modo: il corridorearrivato al segnale je 00426332 (je= jz e jz= jump if zero) è statogabbato da un furfantello (io il cracker) che ho cambiatomomentaneamente le lettere trasformando "je" in "jmp" cioè jump, chesignifica: "Qualunque numero hai prendi una scorciatoia!" Bello ehh? Si, un'ultima cosa e poi vi faccio riposare: il comando "r fl z"cambia solo momentaneamente il valore del flag, in pratica solo fino alriavvio del programma, se volessimo diffondere un crack, dovremmocreare un file che cambi il "je" in "jmp" ciò può essere fatto anche conl'editor esadecimale (ma nel nostro caso non è necessario) vi spiegheròtutte le tecniche nei prossimi tutorial. Ciao e buon crack a tutti. Piccola nota: In genere tutti i prog. hanno un # check all'avvio, in pratica controllano che il numerodi registrazione sia esatto, questo serve ad evitare che chiunque possa inserire unnumero qualsiasi e registare il prg.

Page 6: La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

Hex-Workshop a registrazione esatta crea un file di registro (Hexworks.reg) doveinserisce tutte le informazioni, il file assume questa forma: ********************************************* * 666111666 Quequero * * CrackZ Corp. * * Kî‘Ò * *************************************** Ovviamente asterischi esclusi!!! Una volta creato il file il prg non mostra più la scritta "Unregistered" ne il pulsante diregistrazione "Demo Version". Quequero Vorrei ringraziare aLoNg3x per avermi dato acluni consigli su questo tute...

Tutorial N°3 16-2-1999

Impariamo ad usare SoftICE

In questo tutorial impareremo ad usare SoftICE, conosceremo l'uso dellevarie funzioni ed impareremo anche a modificare il codice di unprogramma.

SoftICE Come abbiamo già detto SoftICE ci mostra il codice assembler di unprogramma, noi poi per scraccherellare il tutto abbiamo bisogno sia diconoscere l'Assembly, sia di saper usare il debugger, infatti comepotremmo guidare una macchina senza conoscere il codice stradale esenza avere la patente? Uno dei comandi che useremo più spesso sarà sicuramente "bpx" cioèbreakpoint on execution che in pratica fa poppare Sice quando per

Page 7: La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

esempio viene eseguita una funzione (GetWindowTextA,GetDlgItemTextA, MessageboxA ecc...) ma ovviamente ne esistono altricome per esempio: bmp: breakpoint su un accesso alla memoria (possiamo utilizzarlo pervedere se una funzione legge o scrive su un determinato indirizzo) bpr: bp (breakpoint) su un rango di memoria bpio: bp su un accesso I/O bpint: bp su un interrupt bmsg: bp su un messaggio (lo useremo per brekkare su funzioni comeWM_GETTEXT). Per maggiori informazioni sui breakpoint vi rimando a questo tutorial. Task: Questo comando visualizza tutti i processi attivi, viene in genereutilizzato in combinazione con Hwnd. Hwnd: Mostra l'handle delle finestre di un determinato programma. Ora vi spiegherò meglio come utilizzare questo comando insieme abmsg. Per prima cosa scegliete un programma vittima (io useròHex-Workshop), avviatelo ed aprite la finestra di registrazione, avviateSice (^D) e scrivete task per vedere con quale nome gira sotto Winzozl'H-Workshop. Il nome che appare per primo e che sembra essere l'unico possibile è:Hworks32. Bene bene, scriviamo: Hwnd Hworks32 e premiamo invio. Vedrete adesso molte scritte, noi vogliamo cercare l'handle della caselladi testo nella quale dobbiamo scrivere il numero seriale, ma come si fà?Bhè l'unico modo che io conosca è scriversi tutti gli handle (primacolonna a sinistra) che presentano l'attributo edit nella colonnaclass-name (la 4° da sinistra) e poi provarli uno ad uno scrivendo: bmsgxxxx (qui va inserito un handle) wm_gettext, ecco un esempio: task hwnd hworks32 bmsg 01A5C wm_gettext. Una volta trovato quello giusto Sice popperà dopo aver premuto ilpulsante di registrazione. bd*: Disabilita tutti i bp può essere sostituito p.e. con bd00 (disabilita il1° bp) be*: Abilita tutti i bp il resto è uguale a "bd" bl: Llista tutti i bp che stiamo utilizzando se appare un "*" il bp èdisabilitato bc*: Cancella tutti i bp la sintassi e come bp e be bh: Ci dice tutti i bp che abbiamo usato dall'accensione del pc (moltoutile) ?: p.e. "? eax" ci dice quale valore esadecimale, decimale ed ASCIIcontiene eax

Page 8: La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

d: "d eax" dump eax, ci fà vedere il suo indirizzo esadecimale (difficileda dire a parole) code on-off: fà apparire il codice esadecimale di fianco alle istruzioni,ecco un esempio: 015F:00425867 JNZ 00425921 <-------code off 015F:00425867 751E JNZ 00425921 <-------code on |----|<-------codice esadecimale cercate di tenere questa istruzione sempre abilitata perchè moltoimportante, ora mi spiegherò meglio: se vogliamo cambiare un JNZ00425921 in JMP 00425921 dovremmo aprire l'eseguibile con l'editoresadecimale, cercare 751E e cambiarlo in EB1E, infatti EB significa JMPe 1E significa 00425921, nelle prossime pagine vi mostrerò una tabellacon quasi tutti i valori esadecimali delle varie istruzioni, dovretericordare sempre che gli ultimi due caratteri (funziona solo per leistruzioni semplici a 4 caratteri, le altre cambiano) di ogni valoreindicano l'indirizzo o il registro a cui si riferiscono, quindi dovretecambiare solo i primi due e non gli ultimi a meno che non vogliatecambiare la direzione del salto oppure il nome del registro. P.E. ilvalore 85D2 significa: TEST EDX, EDX (ricordate questa istruzione? se noandate al tute N°2) però se lo cambiamo in 85F6 diventerà: TEST ESI,ESI, avete capito? a (address) : "a 015F:00425867" ci permette di cambiare ciò che si trovaall'indirizzo 015F:00425867, una volta premuto invio potremo scrivereper esempio: TEST EAX, EAX così il jnz verrà cambiato in test... e (address): edit address, con questa funzione non possiamo cambiarele lettere come con "a 015F:00425867" ma dobbiamo agire sui valoriesadecimali. Una volta premuto invio apprirà una finestra che mostra ivalori, noi andremo a prendere i primi 4 caratteri "751E" ed andremo ascrivere "EB1E", vorrei ricordare che tutti i cambiamenti fatti daldebugger funzionano solo fino a che si riavvia il prog, dopodichè vatutto a farsi benedire. Funzioni: Visual Basic __vbastrcmp,__vbastrcomp: Queste istruzioni vengono usate in VB perfar comparire le stringhe (non chiedetemi nulla a riguardo visto che nonconosco per niente il VB). Per usarle si deve mettere un bp su una delledue, inserire un numero nel box di registrazione, premere ok, aspettareSice e prima di premere F11 si vede cos'è stato messo nello stack. Siesamina un registro (in genere EBP) in questo modo: dd ebp e si controllano gli ultimi 8 valori con questo comando: d xxxxxxxx si potrebbe anche trovare un seriale ;)))) __vbaR8Str: non ne sono sicuro ma dovrebbe essere l'equivalente diGetWindowTextA. rtcmsgbox: Questo è MessageboxA in VB C/C++ GetPrivateProfileStringA à Legge il file .INI dove spesso vieneregistrato il seriale, questa funzione si usa per disabilitare il number

Page 9: La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

check all'avvio del programma. GetWindowTextA à L'abbiamo già usata, comunque serve a copiare ciòche si trva nelle caselle di testo. GetDlgItemTextA à Praticamente ugule alla precedente. hmemcpyà Questa funzione grabba i tasti premuti sulla tastiera e puo esseresfruttata a nostro vantaggio nei sistemi di protezione che non utilizzano funzionistandard (GetWindowTextA, GetDlgItemInt, MessageBoxA ecc...) oppure in queisistemi che abilitano il pulsante di registrazione solo se il codice è esatto, questobreakpoint funzioni infatti ogni volta che noi premiamo un tasto..bello vero? Per ora altri comandi non mi vengono in mente. MessageBoxA à Fà apparire un box di messaggio, la possiamo usare perentrare nel codice del programma dopo la "Beggar off" cioè il messaggioche ci dice che abbiamo sbagliato il seriale ecc.... GetSystemTime à Vede l'ora del sistema e si usa nei programmi chescadono dopo un'ora, due ore ecc....Per utilizzarla basta mettere un bpsu di essa ed avviare il programma. GetLocalTime à Controlla l'ora, il giorno ed il mese. Si usa neiprogrammi a scadenza di 30, 60, 90 gg ecc....Funziona come laprecedente. SetTickCount à Da quello che ho potuto vedere la funz. viene usataspesso per vedere negli shareware quanti giorni mancano all'espirazionedel prog.

Cambiamo il codice al programma

Dopo aver scraccherellato per benino il nostro prog e dobbiamocambiare qualche byte al programma è necessario sapere comecambiare le varie istruzioni, supponiamo di avere un pezzo di codicesimile a questo e vediamo come ci dobbiamo comportare... :004010CE 8B06 mov eax, dword ptr [esi] :004010D0 85C0 test eax, eax :004010D2 7409 je 004010DD :004010D4 40 inc eax :004010D5 E8E6EB0000 call 0040FCC0 :004010DA 83C404 add esp, 00000004 ^---codice ^---istruzioni esadecimale Il nostro crack consiste nel cambiare jE 004010DD in JMP 004010DD, perfarlo avremo bisogno di cercare quel pezzo di codice esadecimaleall'interno dell'H-Workshop. Prendiamo nota di qualche numero prima edopo del salto come ad esempio 85c0740940E8E6, clicchiamo sulpulsante "find" ed inseriamo quei numeri, il nostro bersaglio è il num.7409 e per cambiarlo in jmp basterà prendere dalla tabella qui sotto iprimi due numeri dell'istruzione JMP e mantenere integri i secondi due,così facendo sostituiremo l'istruzione 7409 in EB09 (vorrei dire che senel codice del debugger doveste trovare un jump che abbia più di 4cifre esadecimali allora dovrete usare il comando a xxxxxxxx, fare icambiamenti a mano e vedere cosa appare in Sice, segnarlo ed andarlo a

Page 10: La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

cambiare nell'editor). E se il nostro crack avesse richiesto l'eliminazione dell'istruzione inceax? In questo caso bastava cercare la solita stringa e cambiare il 40 con 90,questo numero equivale all'istruzione NOP, cioè No Operation, significache lì non deve succedere nulla e si deve passare oltre. Se vi capitasse di dover cancellare un'istruzione o di dover lasciare spazivuoti (p.e. se 68c88c deve diventare un jmp non potrete mai scrivereebc88c) ricordate di sostituirli SEMPRE con un NOP. Se per caso non siete sicuri di qualche cambiamento vi ripeto di provareprima con a xxxxxxxx. Comando Effetto Comando Effetto EBXX0 JMP 33XX XOR XXX, XXX 75XX JNZ 77XX JA 7CXX JL 76XX JBE 7EXX JLE C3 RET 7DXX JGE FFFF INVALID 7FXX JG 0000 ADD [EAX], AL 73XX JAE 85XX TEST XXX, XXX 74XX JE/JZ 0BXX OR XXX, XXX F4 HLT 90 NOP

Quequero Passiamo ora al 4° tutorial dove craccheremo un prog facile facile ed impareremo a "patchare" il prog.

Page 11: La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

Il nostro 2° crack

Eccomi di nuovo qui a scrivere un altro tute, scusate la mia assenza masono stato estremamente impegnato e poi ho dovuto cercare un progmolto facile da craccare, questa volta parleremo di AdWiper v1.02,questo proggy non fa altro che velocizzare la connessione eliminandotutti quei noiosi banner. Lo potrete trovare qui. Iniziamo, per prima cosa installate il prog (mi sembra ovvio ;) edapriamolo, vediamo subito un invitante bottone che ci chiede diregistrare AdWiper (anche se a noi dice solo "crackami, cackami" ;),clickiamoci sopra e vediamo apparire un grazioso box che ci chiede unseriale....mmmmm bene. Vogliamo trovare il seriale? Non sia mai! Perchè sniffare il numero (che è da lamer) quando abbiamole potenzialità di disabilitare il check? In realtà questa è la soluzione più semplice da attuare, ed è questa lastrada che prenderemo. Apriamo il nostro fidato W32DASM, facciamogli disassemblarel'eseguibile, clickiamo sul secondo pulsante da sinistra (String DataReferencies) e vediamo di trovare qualche "clue" oppure la "Beggar off"cioè: Incorrect Password, Your number does not match, NumberIncorrect ecc... Ci siamo capiti? Sulla prima riga leggiamo "Thank you for registering" azzzz buono,facciamo doppio click sulla scritta ed avremo davanti qualcosa delgenere: * Referenced by a CALL at Address: |:00402787

Page 12: La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

| :00401400 6AFF push FFFFFFFF :00401402 6891DF4100 push 0041DF91 :00401407 64A100000000 mov eax, dword ptr fs:[00000000] :0040140D 50 push eax :0040140E 64892500000000 mov dword ptr fs:[00000000], esp :00401415 51 push ecx :00401416 8B442414 mov eax, dword ptr [esp+14] :0040141A 53 push ebx :0040141B 56 push esi :0040141C 57 push edi :0040141D 8BF1 mov esi, ecx :0040141F 50 push eax * Possible Reference to Dialog: DialogID_0066 | * Possible Reference to String Resource ID=00102: "Thank you forRegistering!" | :00401420 6A66 push 00000066 :00401422 89742414 mov dword ptr [esp+14], esi :00401426 E8EC110100 call 00412617 :0040142B 8D7E5C lea edi, dword ptr [esi+5C] Mmmm questa cosa non mi piace, non vedo nè jump nè test nè altro,molto male, allora forse non va bene qui, cosa facciamo? Nulla, apriamo di nuovo SDR (String Data Referencies) e facciamo unaltro doppio click sulla prima riga....dovremmo avere qualcosa delgenere: :004021BB E890140000 call 00403650 :004021C0 83C408 add esp, 00000008 :004021C3 85C0 test eax, eax :004021C5 745F je 00402226 <----Ricordate il numero 745F ci servirà dopo* Possible Reference to Dialog: DialogID_0066 | * Possible Reference to String Resource ID=00102: "Thank you forRegistering!" | :004021C7 6A66 push 00000066 :004021C9 8D4C240C lea ecx, dword ptr [esp+0C] :004021CD E8B6440100 call 00416688 :004021D2 6A00 push 00000000 Adesso va bene, come potete vedere all'indirizzo 004021C5 troviamo unbel "jump if equal", se la funzione in quel punto non salta si dovrebbeavere il messaggio di ringraziamento (ma che bravi questiprogrammatori, ci ringraziano anche se crackiamo i loro programmilli ;),provvediamo allora alla registrazione, dovrebbero bastare due semplici"nop" per registrare il prog, ma a questo punto come facciamo acambiare i "connotati" all'adwiper? Nulla di più semplice: andiamo in W32DASM, facciamo doppio clicksull'indirizzo del salto (004021C5) e se guardiamo in basso a destradovremmo avere una scritta di questo genere: @Offset xxxxxxxxh, chenel bostro caso dovrebbe essere 000015C5h (la "h" sta a dire che si trattadi un numero esadecimale). Copiamo da qualche parte questo offset, apriamo l'Hex-Workshop,carichiamo AdWiper.exe ed andiamo in Edit|Go to..., inseriamo l'offset

Page 13: La Grande Guida Al Cracking Di Quequero Si _parte Da Zero

di prima e premiamo invio, ci troveremo davanti ad un ammasso di cifreesadecimali e guarda caso il cursore si ferma su un 7 seguito da un 4 un5 ed una F, in totale:745F, se andiamo a guardare in W32DASM, affiancoall'istruzione JE 00402226 c'è scritto proprio 745F, ciò significa chequesto è il codice esadecimale del salto, cavolo che carino.....adessoper patchare il prog dobbiamo sostituire questo numero con 9090 chesignifica (come dovreste sapere) nop nop, cioè la funzione arrivata inquel punto non fà nulla e passa oltre, cioè alla registrazione. Salviamo il file e quando ci viene chiesto di farne un backup diciamo disi tanto per essere sicuri. Il prog ogni volta che veniva avviato controllava se era stato registrato equindi faceva apparire il pulsante register... e cazzi vari, adesso comepotrete felicemente constatare viene presentata all'inizio la scrittina"Thank you for Registering". Bhè ci vediamo al prossimo tutorial. Vorrei cogliere l'occasione di salutare alcuni cari amici come: NeuRaL_Noise, +Malattia, War-lock, Alor, Along3x, _GEnius, ^courier,YanOrel, Killexx, d4emon, Insanity, EL_Diablo (e la sorella ;), T3x,KeRoUaC, Anub|s, N6U5, Vecna e basta, se ho dimenticato qualcunonon l'ho fatto di proposito.

Se volete contattarmi mi troverete spesso su IRCnet, fatemi una query.

Alla prossima Quequero