Vous êtes sur la page 1sur 3

Tutorial #3: Perfect Keylogger 1.4.7.

Outils:

• Le vrai programme a cracker: Perfect Keylogger v1.4.7.4

• Un désassembleur: Win32asm
• Un éditeur hexadécimal: WinHex 10.2

Observation du CrackMe:

• Une fenêtre intitulée "registration reminder" contenant 4 boutons (dont un


pour entrer un couple nom/serial).

• Time Limit de 3 jours avec toutes les fonctionalités, puis blocage du


programme.

Objectifs:

• S'enregistrer avec un serial quelconque (Partie 1)

• S'enregistrer avec un serial valide (Partie 2)

--> Par conséquent: obtenir full functionality et se débarrasser du time limit

ATTENTION: J'ai eu la remarque récurrente que Perfect Keylogger contenait des spywares...
en effet il a été reporté il y a bien longtemps pour en contenir. Ceux-ci sont bénins ceci-dit,
puisque je n'ai jamais eu de problème avec. Si vraiment cela vous dérange, alors vous
pouvez toujours suivre ce tuto puis le désinstaller de votre PC une fois que vous aurez
terminé. Je ne suis en rien responsable de la présence de ces spywares.
Partie 1: cracker Perfect Keylogger

Ceci est un programme que l'on adore ou que l'on déteste: comme son nom l'indique, il
enregistre toutes les activités du PC sur lequel il est installe: Touches, Clicks etc, il fait même
des impressions d'écran et peut envoyer des emails en toute discrétion pour que vous
puissiez conserver le log d'activité.
D'abord, lorsqu'on rentre un serial au hasard, une fenêtre apparait et nous dit "Registration
code or user name is invalid..." le but va donc être de pouvoir trouver un serial correspondant
à notre nom (gardez donc ce message en tête, ou bien notez-le si besoin). Mais dans un
premier temps, on va essayer de forcer l'enregistrement avec n'importe quel serial.
On ouvre WinDasm et on lance bpk.exe, puis on va chercher ce message d'erreur. Pour
ca, allez dans Search>Text, et tapez par exemple "registration." On n'atterrit pas au bon
endroit, donc on continue la recherche des autres occurrences de ce message avec Find
Next. Finalement, on arrive ici:

:00411118 6A01 push 00000001


:0041111A 58 pop eax
:0041111B EB1E jmp 0041113B

* Referenced by a (U)nconditional or (C)onditional Jump at Address:


|:004110EA(C)
|
* Possible StringData Ref from Data Obj ->"Registration error"
|
:0041111D 689C1D4400 push 00441D9C

* Possible StringData Ref from Data Obj ->"Registration code or user name "
->"is invalid. Please check all fields "
->"and try again!"
|
:00411122 68481D4400 push 00441D48
:00411127 8BCF mov ecx, edi

* Reference To: MFC42.MFC42:NoName0130, Ord:1080h

C'est exactement ce qu'on veut. L'autre moyen d'arriver à cette adresse est comme vous le
savez de passer par les string data references, puis de double-cliquer sur le message
d'erreur si celui-ci existe. Comme toujours, on regarde autour de ce code, et en remontant on
voit quelques lignes qui vont nous rendre la vie facile... concentrez-vous sur la ligne que j'ai
surlignée en rouge plus haut, interessant non?!
En se rendant à l'adresse 004110EA on trouve un saut conditionnel (de type JNE, pour le
vérifier: GoTo>Code Location>004110EA) qui va nous pousser vers le message d'erreur si le
serial n'est pas égal à celui comparé (d'ou JNE = Jump if Not Equal).
On peut donc cracker ce programme très simplement, en changeant le JNE (75) en JE (74),
de manière à toujours aller vers le message d'acceptation du serial, même si celui-ci est
bidon. On aura d'abord ceci:
... et notre but est d'avoir l'écran suivant:

On va donc éditer notre code hexa dans WinHex, en ouvrant notre bpk.exe et en se rendant à
l'offset 110EA, que l'on a repéré dans la barre détaillée en bas, dans WinDasm (cf. Cours No
1). Modifiez le 75 en 74, quittez WinDasm et enregistrez les modifications dans WinHex, et le
tour est joué! Ca marche!

Conclusion Partie 1: En bref, le saut vers le message d'erreur ne pourra désormais


s'exécuter que SI et seulement SI vous avez entre le serial correct... ce qui vous avouerez
serait vraiment infortuit! Le problème avec ce type de reversing, c'est que vous devrez vous
enregistrer à chaque fois que vous utilisez le programme. Eh oui! en effet on saute la routine
d'enregistrement, donc le programme n'inscrit rien dans notre registre, ou il cherche un
enregistrement définitif à chaque démarrage du programme; étant donné que l'on n'est pas
passé par-là... il faut se ré-enregistrer à chaque fois!
Voyons donc dans le cours suivant comment remédier a cela et s'enregistrer pour de bon...

Féliciations cependant!

Tutorial by Dynasty – http://deezdynasty.xdir.org/


http://deezdynasty.totalh.com/forum/