Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
ndhquals2015:clark_kent [2015/04/05 15:39] angel_killah créée |
ndhquals2015:clark_kent [2017/04/09 15:33] (Version actuelle) |
||
---|---|---|---|
Ligne 65: | Ligne 65: | ||
Ensuite, on veut breaker au "call eax" mais pour cela il va falloir poser un hardware breakpoint pour bypass le calcul du checksum. | Ensuite, on veut breaker au "call eax" mais pour cela il va falloir poser un hardware breakpoint pour bypass le calcul du checksum. | ||
- | En effet, si on pose un breakpoint classique sur call eax, l'instruction va être temporairement remplacé par l'opcode 0xCC correspondant à int 3, ce qui va du coup modifier l'intégrité du code et être détecté par le calcul du checksum. | + | En effet, si on pose un breakpoint classique sur call eax, l'instruction va être temporairement remplacé par l'opcode 0xCC correspondant à int 3, ce qui va du coup modifier l'intégrité du code et donc modifier le checksum. |
Du coup, on va poser un hardware breakpoint, car il a le même effet que le breakpoint classique sauf qu'il ne modifie pas le code mais seulement un registre. Pour poser un hardware breakpoint, il faut déjà que le binaire soit en cours d'exécution. | Du coup, on va poser un hardware breakpoint, car il a le même effet que le breakpoint classique sauf qu'il ne modifie pas le code mais seulement un registre. Pour poser un hardware breakpoint, il faut déjà que le binaire soit en cours d'exécution. | ||
Ligne 78: | Ligne 78: | ||
r | r | ||
hb *0x80485DF | hb *0x80485DF | ||
- | </code | + | </code> |
De là, on voit qu'au moment du call eax, eax vaut : 0x804b008. | De là, on voit qu'au moment du call eax, eax vaut : 0x804b008. |