logo Homepage
Pages: [1]
  Imprimer  
Auteur Fil de discussion: Cracking level 3 : Cracker un prog + keygen  (Lu 2332 fois)
Lascazas

Profil challenge

Classement : 141/54254

Membre Junior
**
Hors ligne Hors ligne
Messages: 94

//


Voir le profil
« le: 12 Juillet 2015 à 20:40:04 »

Suite du Level 2 avec toujours le même programme tetris, qui est donc déjà unpacké.

Donc, on l'ouvre dans OllyDBG, on lance avec F9.
Pour le nom de Registration, on met par exemple Echo, et pass=loIilol
On met "Register now" et le message d'erreur apparait:
http://image.noelshack.com/fichiers/2012/31/1343831399-0.png

On ne le ferme pas, et on va mettre pause dans OllyDBG (un bouton en haut à gauche)

La on va aller voir dans la pile (en bas à droite) les appels qui ont été fait.
On descend pas mal, jusqu'à retrouver Echo et loIilol
http://image.noelshack.com/fichiers/2012/31/1343831569-1.png
Là on voit deux choses:
0012F400  |00AAE8A4  ASCII "loIilol"
0012F404  |00AB12A8  ASCII "Echo"
0012F408  |00AB12BC  ASCII "4563686F"


"4563686F" ça a bien la gueule d'un serial ça, mais vous verrez qu'il manque un truc, va falloir chercher plus loin !

Et aussi:
0012F3C4  |004872B0  RETURN to Tetris2.004872B0 from <JMP.&User32.MessageBoxA>

Ca doit revenir à l'adresse 004872B0 après l'appel à la MessageBox qui nous dis que le serial est invalide.
Donc on fait clic droit dessus > Follow in disassembler
On arrive donc à côté du invalid registration, on remonte un peu dans le code, et on voit..."Registration Success!"
http://image.noelshack.com/fichiers/2012/31/1343831923-2.png
Juste au dessus on voit un JE, qui mène au Invalid registration
C'est donc là qu'est la vérification du programme.

Pour voir un peu ce qui se passe, on pose un breakpoint sur le CALL en 4870B5 juste avant le JE, ça doit être la fonction de vérification.
Une fois le breakpoint posé, on relance le programme avec F9, et on remet Echo et loIilol, on essaye de Register.
Ca s'arrête là:
http://image.noelshack.com/fichiers/2012/31/1343832712-3.png

Les paramètres de la fonction sont placés dans EAX et EDX
EAX = CTW303337-4563686F
EDX = loIilol

Donc de toute évidence, le sérial pour Echo est CTW303337-4563686F
Notez que le truc est simple, 4563686F c'est juste "Echo" en hexadecimal.

Pour le patcher pour qu'il mette OK pour n'importe quel serial, il suffit de remplacer le JE par JNZ ou NOP, et d'enregistrer avec Clic droit > copy to executable

Petit bonus, on va transformer le programme en Keygen, c'est déjà un peu plus compliqué
Il ne faut pas avoir modifié le JE, donc prenez une version vierge ou n'y touchez pas.
On regarde là où y'avait notre breakpoint.
Le serial correct est mis dans EAX avec
004870B2    8B45 EC         MOV EAX,DWORD PTR SS:[EBP-14]
Donc le serial est à l'adresse SS:[EBP-14]
(SS veut dire Stack Segment)
On regarde juste avant le message Invalid:
http://image.noelshack.com/fichiers/2012/31/1343833600-4.png

En fait le serial est supprimé de la mémoire direct après pour qu'on puisse pas le retrouver !
Donc tout à fait à l'arrache, on va mettre NOP à la place des 4 CALLs qui suppriment le serial
Et à la place de :
0048729D    68 24754800     PUSH Tetris2.00487524
Qui met "Please make sure the registration...", on double clique dessus et on met:
PUSH DWORD PTR SS:[EBP-14]
Ce qui devrait donner ça:
http://image.noelshack.com/fichiers/2012/31/1343835237-5.png
On laisse comme ça et on enregistre avec Copy to executable, Tetris3.exe

Maintenant, en entrant un nom et en mettant n'importe quoi comme serial, au lieu de nous dire "Please make sure..." quand le serial n'est pas bon, il fait le keygen et nous donne le bon serial:
http://image.noelshack.com/fichiers/2012/31/1343835275-6.png

Bon, je pense qu'on a assez maltraité Tetris pour cette fois
Journalisée
Pages: [1]
  Imprimer  
 
Aller à: