Outils d'utilisateurs

Outils du Site


ndh2k12_public:crackme:bukakke

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

ndh2k12_public:crackme:bukakke [2012/07/02 14:05]
TheLizardKing [ccc function]
ndh2k12_public:crackme:bukakke [2017/04/09 15:33] (Version actuelle)
Ligne 109: Ligne 109:
 </code> </code>
  
-Bon, on voit un certains nombre de ''mov [ebp-xx],0xyy'', je décide de ne pas y prêter attention pour le moment. On remarque surtout l'appel à la fonction ''WhatisIt'' avec laquelle notre serial est passé en argument, ainsi que l'appel à ''ccc'' qui passe en argument quelque chose stocké en ''ebp-0x28'' ainsi que ''ebp-0x48''. Ceci parait louche, d'autant qu'il y a un certain nombre de ''mov'' sur l'''ebp''. La suite du programme dépend de ce que renvois ''ccc'' dans ''eax''. Si c'est un 0, le serial n'est pas le bon, si c'est autre chose, le mot de passe est le bon.+Bon, on voit un certain nombre de ''mov [ebp-xx],0xyy'', je décide de ne pas y prêter attention pour le moment. On remarque surtout l'appel à la fonction ''WhatisIt'' avec laquelle notre serial est passé en argument, ainsi que l'appel à ''ccc'' qui passe en argument quelque chose stocké en ''ebp-0x28'' ainsi que ''ebp-0x48''. Ceci parait louche, d'autant qu'il y a un certain nombre de ''mov'' sur l'''ebp''. La suite du programme dépend de ce que renvoie ''ccc'' dans ''eax''. Si c'est un 0, le serial n'est pas le bon, si c'est autre chose, le mot de passe est le bon.
  
 Il ne nous reste plus qu'à regarder ce que font ''WhatisIt'' et ''ccc''. Il ne nous reste plus qu'à regarder ce que font ''WhatisIt'' et ''ccc''.
Ligne 137: Ligne 137:
    0x08048cdb <+39>: je     0x8048ce4 <ccc+48>            ; ils sont égaux    0x08048cdb <+39>: je     0x8048ce4 <ccc+48>            ; ils sont égaux
    0x08048cdd <+41>: mov    eax,0x0                       ; si non, eax <- 0    0x08048cdd <+41>: mov    eax,0x0                       ; si non, eax <- 0
-   0x08048ce2 <+46>: jmp    0x8048cf3 <ccc+63>            ; on sors de la fonction ! (return 0) <=> le serial n'est pas le bon+   0x08048ce2 <+46>: jmp    0x8048cf3 <ccc+63>            ; on sort de la fonction ! (return 0) <=> le serial n'est pas le bon
    0x08048ce4 <+48>: add    DWORD PTR [ebp-0x4],0x1       ; si les deux chars sont égaux, on incrémente de 1 le compteur    0x08048ce4 <+48>: add    DWORD PTR [ebp-0x4],0x1       ; si les deux chars sont égaux, on incrémente de 1 le compteur
    0x08048ce8 <+52>: cmp    DWORD PTR [ebp-0x4],0x1f      ;    0x08048ce8 <+52>: cmp    DWORD PTR [ebp-0x4],0x1f      ;
Ligne 147: Ligne 147:
 </code> </code>
  
-Bon, on remarque très facilement que c'est une boucle qui vérifie si deux chaines sont les mêmes. A partir de la première différence, on sors de la boucle. Il ne nous reste plus qu'à savoir à quoi corresponde les deux chaines. L'une doit probablement correspondre à notre serial et l'autre au serial à trouver. Elles ont certainement été calculées par la fonction ''WhatisIt'' que nous avons choisis de ne pas regarder. +Bon, on remarque très facilement que c'est une boucle qui vérifie si deux chaines sont les mêmes. A partir de la première différence, on sort de la boucle. Il ne nous reste plus qu'à savoir à quoi correspondent les deux chaines. L'une doit probablement correspondre à notre serial et l'autre au serial à trouver. Elles ont certainement été calculées par la fonction ''WhatisIt'' que nous avons choisi de ne pas regarder. 
  
-Pour arriver à trouver quelle chaine correspond à quoi, il suffit de lancer le programme deux fois, avec deux serials différent et de regarder laquelle des deux valeurs a changé!+Pour arriver à trouver quelle chaine correspond à quoi, il suffit de lancer le programme deux fois, avec deux serials différent et de regarder laquelle des deux valeurs a changé !
  
 <code> <code>
ndh2k12_public/crackme/bukakke.1341230710.txt.gz · Dernière modification: 2017/04/09 15:33 (modification externe)