logo Homepage
Pages: [1]
  Imprimer  
Auteur Fil de discussion: Cracking: Memory et Hardware Breakpoint  (Lu 6004 fois)
Lascazas

Profil challenge

Classement : 141/54278

Membre Junior
**
Hors ligne Hors ligne
Messages: 94

//


Voir le profil
« le: 13 Juillet 2015 à 20:16:38 »

Memory et Hardware Breakpoint

Pour ça on prend un crackme que j'ai codé en VB6:
https://www.dropbox.com/s/u64y765zl7vhudv/crackme.exe

Nos 3 techniques pour retrouver la vérification:
-Pause + mater la pile
-Text strings
-Breakpoint sur fonctions

En voilà une quatrième
On ouvre le prog dans OllyDBG.
Pas de text strings ni de fonctions intéressante.
On va déjà tester le programme pour voir.
On lance avec F9

On entre un truc dedans, on appuie sur Go, ça se transforme en petit points avec le message Bad.

On va donc essayer de mettre un breakpoint en mémoire.
Mettons LOLlLOL pour tester:
http://image.noelshack.com/fichiers/2012/33/1344955132-1.png

On appuie pas sur Go, et on va dans OllyDBG.
On clique sur le bouton M bleu
Ca affiche tous la mémoire adressée au processus.

On clique droit tout en haut et on met Search:
http://image.noelshack.com/fichiers/2012/33/1344955481-2.png
On met alors LOLlLOL dans le champs ASCII
On recherche.

Il va s'arrêter quelque part sur LOLlLOL.
On fait clic droit dessus > Breakpoint > Memory, on write:
http://image.noelshack.com/fichiers/2012/33/1344955597-3.png
Cela veut dire que quand le programme va écrire à cet endroit de la mémoire, le programme va s'arrêter !

On appuie sur Go
Quand LOLlLOL est remplacé par des points, le programme s'arrête.
On va voir dans la pile.
On descend jusqu'à retrouver un retour vers crackme.exe
On fait clic droit dessus > Follow in disassembler:
http://image.noelshack.com/fichiers/2012/33/1344955667-4.png

Cela nous permet d'arriver un peu après la vérif.
On va supprimer le memory breakpoint vu qu'on a trouvé le bon endroit.
Sur le dump hexa en bas à gauche, Clic droit > Breakpoint > Remove memory breakpoint:
http://image.noelshack.com/fichiers/2012/33/1344955839-5.png

Un peu au dessus on voit un CMP et un JNZ.
On pose un breakpoint sur le CMP pour voir ce qu'il compare.
Ca a l'air d'être des nombres, donc on va mettre "12345" et appuyer sur Go
Ca s'arrête là:
http://image.noelshack.com/fichiers/2012/33/1344956000-6.png
Il compare 3039 à 7AFD.
3039 = 12345 en hexa
7AFD = 31485 en hexa

Le pass est donc 31485, il nous met Not Bad
http://image.noelshack.com/fichiers/2012/33/1344956186-7.png

Les hardware breakpoints sont similaires, sauf que:
-On a 4 hardware breakpoints
-Ils sont plus rapides (Car ils sont gérés directement par le CPU, d'où leur nom)
-Parfois il y a des protections contre certains breakpoints

Ici on à utilisé un breakpoint à l'écriture, il y a aussi des breakpoints à l'acces (Lecture) qui peuvent être utiles.
Journalisée
Pages: [1]
  Imprimer  
 
Aller à: