Le but est donc de le cracker pour arriver sur un bon message quand on clique sur OK. Il faut donc modifier un saut.
Après avoir téléchargé ce crack-me, lancez-le pour voir comment il se présente et relevez le titre du message d'erreur et son contenu.
Désassemblez ensuite ce crack-me avec WinDasm et cliquez sur
pour trouver le message d'erreur. Double-cliquez sur ce message ("Ahhh! Tu n'as pas
reussis" ou "FATAL ERROR !!" - titre du message). Vérifiez qu'il n'y en a qu'un seul en double-cliquant encore une fois (dans certains programmes le
message peut apparaître plusieurs fois, mais là ce n'est pas le cas).
Remontez un peu et là on aperçoit juste avant le message :
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401016(U)
Le message est donc appelé par un saut à l'adresse 00401016. On va donc à cette adresse soit en remontant les lignes ou en la recherchant (avec F12 ou "Goto Code Location").
Arrivé à cette ligne, on voit un JMP :
:00401016 |
EB1A |
jmp 00401032 |
Pour atteindre la ligne 00401032 (où il saute), on double-clique sur cette ligne pour la
sélectionner (elle deviendra verte) et on clique sur
pour arriver à la ligne où il va.
Pour revenir au JMP on clique sur
. Il arrive juste avant le mauvais message. Si on regarde un peu en dessous du JMP, on voit un message qu'il saute et qui à l'air d'être le bon message :
* Possible StringData Ref from Data Obj ->"Okay Dokey!"
Vous l'avez donc sûrement compris, il faut donc changer ce vilain jmp et le remplacer par un nop (pas d'opération = pas
de saut). On relève donc le code en hexa de la ligne du jmp ("EB1A").
On ouvre le crack-me avec l'éditeur hexadécimal et il faut rechercher "EB1A".
Mais il peut, pour certains programmes, y avoir des dizaines de "EB1A". Donc on prend le code
hexa des instructions qui se retrouvent avant et après le JMP (on recherchera donc : "83F807EB1A6A40" et on vérifiera qu'il n'y en a pas plusieurs).
Autre méthode plus pratique à mon goût pour retrouver EB1A : on peut se repérer
avec l'offset, vous trouvez son numéro tout en bas dans la barre d'état quand
vous sélectionnez la ligne voulue :Code Data @:00401016 @Offset 00000616h
in File ....etc....
Dans ce cas "616" est l'offset, pas besoin des zéros avant le nombre et le
"h" indique que c'est en hexadécimal. Pour se rendre à cette adresse dans HexDecCharEditor on fait "Edit" -->
"Go To..." ou CTRL+T. Et on tape dans la case "Hex" (car l'offset
est en hexadécimal) : 616, on valide et on se retrouve directement sur le code
qu'on souhaite modifier.
Arrivé là où il faut, on remplacera EB1A par 9090 ("nop nop"). On enregistre, on le lance et là... ça marche !
Attention : si le programme à modifier est déjà ouvert ou désassemblé
avec WinDasm vous ne pourrez pas enregistrer le fichier par dessus. Dans ce cas
il faut mieux enregistrer sous un autre nom, ce que je vous conseille de faire à
chaque fois pour avoir une sauvegarde de l'original. Mais n'oubliez pas de mettre le ".exe" à la fin du nom du fichier.
J'espère que vous avez tout compris. Si vous ne comprenez pas ou si je ne suis pas clair dans mes explications,
n'hésitez pas à me contacter à cette adresse : deamon.crack (at) netcourrier.com