Overblog Suivre ce blog
Editer la page Administration Créer mon blog
/ / /

Objectif

Cracker un crack-me en modifiant un saut.

Niveau :

Très débutant

Ce qu'il vous faut :

- WinDasm

- Un éditeur hexadécimal

- Le crack-me de 3 Ko (et oui, c'est mieux de l'avoir si vous voulez le cracker ;-)


Allez go !

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 string 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 jumpto.jpg pour arriver à la ligne où il va.

Pour revenir au JMP on clique sur retjump.jpg. 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.

Partager cette page

Repost 0
Published by

Présentation

  • : Le hacking à la portée de tout le monde
  • Le hacking à la portée de tout le monde
  • : le hacking n'aura plus de secrets pour vous !!
  • Contact

VIPEuroShare

Recherche

Archives

Pages

Liens