QTalka v1.05
(Creiamo un piccolo keygenerator)


21-06-1999

by Quequero

 

 

UIC's Home Page

Published by Quequero


Hahaha!!! :))) Devo commentare il mio tutorial, che ridere :))) cmq sia in questo tutorial imparerete a creare un keygenerator facendo esperienza su una protezione a dir poco banale, tutorial per NewBies quindi ciauuuuzzzz :)))
                                                                    Quequero
 
 
Home page: http://quequero.cjb.net
E-mail: [email protected]
UIN: 41703512
 

Difficoltà

(X)NewBies ( )Intermedio ( )Avanzato ( )Master

 

Piccolo tutorial su come sfruttare una banalissima protezione per poter creare un KeyGenerator


QTalka v1.05
(Creiamo un piccolo keygenerator)
Written by Quequero

Introduzione


Ottimo, la storia è sempre quella :)) creiamo un keygenerator a partire da un programma protetto in modo molto semplice ;)

Tools usati

IDA Pro v3.8a
SoftIce v3.x

URL o FTP del programma

potete prelevare la vittima su: http://www.qtalka.com

Notizie sul programma 

Il programma serve per farsi una chicchierata in viva voce su ICQ, per registrare il programma ci viene chiesto un serial che, nonostante le apparenze, viene calcolato in base al nostro UIN, il programma quindi non si avvia se non c'è ICQ in funzione, una volta registrato non mette una chiave nel registro bensì crea sotto c:\windows un file .ini chiamato qt.ini e recante il seguente testo:
[LM_qtalk]
regnum=3475220         <-------Numero calcolato in base al nostro UIN
putercode=35838
(Non copiare il seriale, trovalo da solo che è più costruttivo :)

Essay

Allora, avviate ICQ ed aprite QTalka, clickate sull'icona rappresentante un telefono, clickate su "Setup | Register QTalka", inserite nel box un numero (io uso il solito 666111666) e premete invio, prendete nota della beggar off appena apparsa: "Registration Code NOT Correct"....Mmmmm bene, aprite IDA Pro, andate nel menu "View | Names" e cercate questa stringa (si trova circa a metà), rinominate questa stringa come "Beggar_off" (hehe, se non sapete usare IDA leggete il mio mega tutorial :) ed avrete davanti qualcosa di simile a questo:
 
CODE:0047FD47                                                   db 64h, 65h, 3 dup(0), 4 dup(0FFh), 1Dh
CODE:0047FD47                                                  db 3 dup(0)
CODE:0047FD54            Beggar_off                   db 'Registration Code NOT Correct',0
CODE:0047FD54                                                                                                   ; DATA XREF: CODE:0047FC89
CODE:0047FD72                                                   align 4
CODE:0047FD74                                                   db 4 dup(0FFh), 14h, 3 dup(0)
CODE:0047FD7C            Chiusura                        db 'Qtalk is now Closing',0   ; CODE XREF: CODE:0047FD20
CODE:0047FD7C                                                                                                    ; DATA XREF: CODE:0047FC93
CODE:0047FD91                                                   db 2 dup(0)

come vedete appena sotto la beggaro off troviamo una bella XReference, doppioclickiamoci sopra ed andiamo a finire più su, ne troviamo un altra e ci doppioclickiamo ancora sopra finchè arriviamo qui:
 
CODE:0047FBD4          CODE_47FBD4:                                                           ; CODE XREF: CODE:0047FBBC
CODE:0047FBD4                                                    mov eax, ds:BSS_488054
CODE:0047FBD9                                                    cmp byte ptr [eax+0B7Fh], 0
CODE:0047FBE0                                                     jz Beggar_routine
CODE:0047FBE6                                                     mov eax, offset Thx     ; Questa l'ho rinominata io
notiamo qui ancora una bella XReference e poi un bel "cmp byte ptr xxxxx, 0", carino, se guardiamo alla riga di sopra scopriamo che un qualcosa "BSS_488054" è stato mosso in eax, per vedere cos'è doppioclickiamo su quel valore ed IDA ci da questo risultato        "BSS_488054 dd        ?", bene bene ma saliamo tramite quella XRef ancora due volte finchè non arriviamo qui:
 
CODE:0047FB65              CODE_47FB65:                                                          ; CODE XREF: CODE:0047FB00
CODE:0047FB65                                                      call Genera_seriale
CODE:0047FB6A                                                      mov eax, ds:UIN
CODE:0047FB6F             CODE_47FB6F:                                                            ; CODE XREF: CODE:0047FB04
CODE:0047FB6F                                                     mov ecx, 0Ch
CODE:0047FB74                                                     cdq                         ;  Prepara una divisione signed, converti una                                                                                                                    ;   doubleword in una quadword
CODE:0047FB75                                                     idiv ecx                  ;  dividi ecx per eax....eax/0ch
CODE:0047FB77                                                     mov esi, eax         ;   muovi eax nel Source Index (ESI)
CODE:0047FB79                                                     sub esi, 48h          ;  è sottraigli 48h
CODE:0047FB7C                                                     xor ebx, ebx
CODE:0047FB7E                                                     mov eax, ds:BSS_488054
 
e guardate un po' cosa si rivede? Il nostro caro buffer BSS_488054, come potete notare ho rinominato qualche funzione per rendervi più facile la comprensione del disassemblato, adesso che intuiamo dove viene generato il seriale segnamoci l'indirizzo 0047FB65 e cerchiamo di arrivarci con Sice....Aprite QTalka, inserite un numero a caso, mettete un bp su GetWindowTextA e premete invio, fate un po' di step finchè non arrivate qui vicino e poi continuate a mano :))) una volta arrivati qui cancellate tutti i bp e mettetene uno a quell'indirizzo, riavviate il prog, reinserite un serial ed aspettate che Sice poppi....È poppato? Lo spero per voi :)) a questo punto la prima cosa intuitiva da fare è andare a vedere cosa viene mosso in eax.....Fate "? eax" in Sice e....41703512 mmmm è familiare....Ma certo che lo è, è il mio UIN, ecco perchè il programma voleva essere affiancato da ICQ hehehe, bene vediamo ora una serie di operazioni sul nostro UIN, steppiamo fino ad arrivare all'indirizzo 0047FB7C e facciamo ancora "? eax"...Mmmm potrebbe essere il nostro serial??? Per verificare usciamo da Sice ed inseriamolo...Vediamo un po'...Funziaaaaaa :))) hehe abbiamo sgamato il seriale, a dire il vero all'indirizzo 0047FBA3 c'era un "CMP ESI, EBX" ed anche lì potevamo trovare il seriale in ESI, però non avremmo potuto fare il nostro keygenerator perchè non sapevamo cosa faceva il programma al nostro UIN.
Benissimo per creare il nostro keygen dobbiamo capire cosa fa il programma, ecco che vi aiuto un pochetto:
1) Prende il nostr UIN e lo mette in un buffer
2) Muove l'UIN in EAX e poi lo divide per 0Ch
3) Muove EAX (che contiene il risultato) in ESI
4) Sottrae 48h da ESI
Bhè adesso ognuno di voi nel linguaggio preferito può creare una piccola finestrella nella quale inserire un UIN, copiare e pastare il codice di generazione da IDA e fare il proprio key maker. Buon Lavoro
                                                                                                                          Quequero
Note finali
Grazie a questo programma abbiamo capito come sfuttare il lavoro di software programmer malpagati e svogliati per imparare qualcosa di utile ;))))))
E tanto che mi ci trovo vorrei anche salutare e ringraziare il mio amico Tin_Man che con tanta gentilezza mi ha permesso di venire a conoscenza di questo simpatico programmetto ed è quindi grazie a lui che ho scritto questo tute.....Grazie Tin_Man, grazie di vero cuore :)))))))))))))))))))

Disclaimer

Vorrei ricordare che il software va comprato e  non rubato, dovete registrare il vostro prodotto dopo il periodo di valutazione. Non mi ritengo responsabile per eventuali danni causati al vostro computer determinati dall'uso improprio di questo tutorial. Questo documento è stato scritto per invogliare il consumatore a registrare legalmente i propri programmi, e non a fargli fare uso dei tantissimi file crack presenti in rete, infatti tale documento aiuta a comprendere lo sforzo immane che ogni singolo programmatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili.
Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly

UIC's page of reverse engineering, scegli dove andare:


Home   Assembly   CrackMe   IRC   Links   NewBies
News   Forum  Hacking   Tools
Tutorial 
UIC