CRACKING WINBODE |
||
Data |
by "CaptZero" |
|
24/04/2001 |
Published by Quequero |
|
|
Il target è molto semplice e quasi mi dispiace per l’autore…E tu non darmi mai più un form scritto col word ok? hihihihi |
nè hai almeno un dozzina!!! |
.... |
Home page se presente: http://digilander.iol.it/badchip/ E-mail: [email protected] CaptZero, canale #Crack-it su irc.azzurra.it |
.... |
Difficoltà |
(X)NewBies ( )Intermedio ( )Avanzato ( )Master |
Questo tutorial è nato per dimostrare come un programma all’ apparenza piccolo (97k) dal costo irrisorio , lire 5000 nasconda al suo interno alcune insidie, che avvolte in programmi da centinaia di milalire basta una solo salto condizionato per mandare a ramengo tutta la prot. Ai NewBies è dedicato questo tutorial.
Cracking WINBODE
Written by CaptZero Alias Badchip
Introduzione |
In Questo tutorial ci occuperemo di eliminare i nags di eliminare il controllo sul 'CrC' e di registrare il programma
Tools usati |
URL o FTP del programma |
Il programma può essere scaricato da : http://web.tiscalinet.it/hiforce/winbode/index.php
Notizie sul programma |
Win Bode è un'applicazione Windows che permette di tracciare e stampare i diagrammi di Bode, sia asintotici che reali, e di effettuarne lo studio. Il programma è registrabile tramite 2 seriali , Nag iniziale di 20 secondi a rammentarvi che siete non registrati, e un seconda Nag di 10 secondi che ci punisce quando proviamo a mettere una seriale sbagliata, più un controllo se modificate il programma in qualche sua parte.
Essay |
Lanciamo il programma andiamo in About e vediamo il Registrami , proviamo a mettere un nome e 2 seriali inventate e clikkiamo OK , la risposta a meno di essere il mago Silvan è : Numeri di serie errati , è vietato inserire ecc.ecc. Bene disassembliamolo con Windasm, andiamo alla ricerca della stringa : è vietato. Ci troveremo qua:
:0001.CF20 call USER.SETTIMER----------------> Settato il Timer di punzione
:0001.CF25 or ax, ax
:0001.CF27 jne CF35-------------------------- > Se hai messo seriali errate vai CF35
:0001.CF29 les di, [bp+06]
:0001.CF2C push word ptr es:[di+04]
:0001.CF30 call USER.DESTROYWINDOW
:0001.CF35 cmp word ptr [23EA], 0064
:0001.CF3A jge CF55 -----------------------> Se è passato il tempo previsto salta a killare il timer!
:0001.CF3C les di, [bp+06]
:0001.CF3F push word ptr es:[di+04]
Bene patchamo il JNE CF35 in JE35 e patchamo JGE CF55 in JMP CF35 cosi eliminiamo la noisosa nag.Rilanciamo il programma per vedere se l' effetto desiderato è riuscito, ma scopriamo che il programma non parte più, al posto ci appare una messagebox che ci avverete che il programma è stato 'Manipolato da un probabile virus'. eheh! mah!Rilanciamo il windasm andiamo alla ricerca della stringa ' Virus ' e approdiamo qua:
:0001.8B2C lea di, [bp+F6B2]
:0001.8B30 push ss
:0001.8B31 push di
:0001.8B32 call 0004.08F0h
:0001.8B37 cmp word ptr [bp+F6A4], 0002 ------------------------>Controlla se è stato modificato il file
:0001.8B3C jne 8B64--------------------------- -------------------------->Salta se non è Zero (ovviamente se è modificato non lo sarà)
:0001.8B3E cmp word ptr [bp+F6A2], CE00------------------->Ulteriori controlli di modifica del file
:0001.8B44 jne 8B64--------------------------------------->Sempre come prima salta e di che è modificato
:0001.8B46 cmp word ptr [bp+F6AC], 0042------------------->sempre la stessa solfa
:0001.8B4B jne 8B64--------------------------------------->Come potete notare la prot è stupida in quanto ripetitiva
:0001.8B4D cmp word ptr [bp+F6AA], F6DE
:0001.8B53 jne 8B64
:0001.8B55 cmp word ptr [bp+F6A8], 0048
:0001.8B5A jne 8B64
:0001.8B5C cmp word ptr [bp+F6A6], C5C4
:0001.8B62 je 8B87----------------------------------------->Se tutto è andato bene saltiamo e il programma parte
Come possiamo vedere sopra, esegue una serie di comparazioni , di seguito c'è una JNE all' indirizzo 8B64 sempre uguale per tutti quanti i controlli , se uno solo va male ci porterà dritti dritti verso la NAG, e ci segnalerà che il programma è modificato (genticamente ? eheh).Sarebbe stato oppurtuno per il programmatore di Winbode utilizzare il metodo della JUNGLE CALL (letteralmente giungla di call) e rendere più difficile il compito del cracker.Cmq modifichiamo tutti i JMP 8B64 con dei NOP 'no operation' , mentre il JE 8B87 che controlla il tutto lo facciamo saltare senza condizioni ossia JMP 8B87. A questo punto il programma parte nonostante le modifiche effettuate come se nulla fosse :). Ora passiamo per curiosità a vedere dove sta il Timer che ci fà perdere i 20 secondi iniziali prima di abilitarci l' Ok per entrare nel programma. Cerchiamo con il windasm KILLTIMER, dopo una rapida ricerca adocchiamo questa parte di codice molto interessante:
0001.D650 inc word ptr [23EA]
:0001.D654 cmp word ptr [23EA], 00C8
:0001.D65A jge D65E------------------------------------------>Se facciamo saltare con JMP i 20 sec vanno a farsi un giro :)
:0001.D65C jmp D67A
:0001.D65E les di, [bp+06]
:0001.D661 push word ptr es:[di+04]
:0001.D665 push 0001
:0001.D667 call USER.KILLTIMER
Bene a questo punto abbiamo fatto fuori le Nag che non ci faranno più perdere tempo, il controllo sulle modifche del file si fà i fatti suoi, non ci rimane che registrare il programma vediamo come. Diamo uno sguardo nell string reference del windasm e vediamo due cose interessanti: la prima è registrazione la seconda Numeri accettati! . Ci guardiamo e finiamo qua :
:0001.CEE mov di, 0F1F
:0001.CEF1 push ds
:0001.CEF2 push di
:0001.CEF3 call KERNEL.WRITEPRIVATEPROFILESTRING
:0001.CEF8 mov ax, [bp+FEF6]
:0001.CEFC cmp ax, [bp+FEF2]----------------------------------->Qui è comparata la prima seriale inserita
:0001.CF00 jne CF0C-------------------------------------------> Se è errata salta
:0001.CF02 mov ax, [bp+FEF4]
:0001.CF06 cmp ax, [bp+FEF0]---------------------------------->compara la seconda seriale inserita
:0001.CF0A je CF65-------------------------------------------->Salta a NUMERI ACCETTATI :)
Percui patchamo JNE CF0C in JE CF0C e il JE CF65 in JNE CF65 ( si poteva anche saltare il tutto lò sò ma vorrei far capire al novellino cosa sta succedendo). Cosi facendo mettendo qualsiasi seriali a caso il programma verrà registrato. Infatti immettendo nei relativi campi due seriali , il programma ci risponde : NUMERI ACCETTATI... però prosegue dicendoci che all riavvio del programma saremo registrati. Ciò vuol dire che 99 su 100 il programma controllerà la correttezza delle seriali inserite.A questo punto non ho più voglia di guardare il disassemblato con il windasm perchè ho voglia di concludere subito ehehe.Poppo il Softice e setto un breakpoint spulciando tra quelli disponibili guardando nelle import del windasm, mi balza all' attenzione il GETPRIVATEPROFILEINT bene il mio istinto mi dice che sono sulla strada giusta, percui per chi non lo sà digito bpx getprivateprofileint , seguito da invio e control D per uscire , lancio il programma winbode e....... POPPP!!... scatta puntuale il softice, vediamo dove :
:0001.8DD1 call KERNEL.GETPRIVATEPROFILEINT------------------>Qua mi poppa il sice
:0001.8DD6 mov [bp+F69A], ax
:0001.8DDA mov ax, [bp+F69C]
:0001.8DDE cmp ax, [bp+F6A0]--------------------------------->Compara la seriale 1
:0001.8DE2 jne 8DF1------------------------------------------>Se è errata parti demo
:0001.8DE4 mov ax, [bp+F69A]
:0001.8DE8 cmp ax, [bp+F69E]--------------------------------->Compara la seriale 2
:0001.8DEC jne 8DF1------------------------------------------>Se è errata parti demo
:0001.8DEE jmp 8EA4------------------------------------------>Salta e parti Full Fine del CRACK!
Percui per fargli credere che siamo registrati basterà semplicemente mettere tutti e due i JNE 8DF1 come JE. Le modifiche si posso effettuare con un qualsiasi HEX editor , consiglio l' ultraedit32 a mio avviso il migliore , rammento per i NewBies che il JE è uguale a hex 74 e JNE a 75 percui con l' editor basterà trovare gli opcode con un semplice find e modificare i 74 in 75 e viceversa dove necessario, mentre il JGE da 7D a salta e basta percui EB, mentre i NOP sono 90
Note finali |
Spero che questo primo tutorial per UIC sia di aiuto per gli aspiranti cracker, il prossimo sarà di livello avanzato/master. Un Saluto a tutti gli abitanti di #Crack-it su irc.libero.it in special modo a Quequero e ph0bos, AnderaGeddon, ^Case^ , CHR , mrcode e Lord_J , Pincopall che rompe sempre le PALL :-)
Disclaimer |
Se il programma vi interessa compratelo in fondo 5000 lire è un prezzo ragionevole :)
Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly e perchè mi piace crakkare!
Capitoooooooo????? Bhè credo di si ;))))