CRACKING WINBODE

Data

by "CaptZero"

 

24/04/2001

UIC's Home Page

Published by Quequero


Quando pensi che il tuo programma abbia un BUG ...............

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

Windasm 8.93

Softice 4.05

Ultraedit32

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 ;))))