by RAOULLEVERT » Fri Sep 02, 2011 12:13 am
Je vois que pas mal de monde est bloqué sur ce challenge, et sans vouloir donner une réponse toute faite, je vais expliquer comment j'ai passé ce challenge (en gros 15 minutes).
Déjà, inutile de modifier le programme. Ici il ne s'agit pas juste d'afficher la fenêtre "Bravo t'es un h4x0r de fou, je te kiff !". Par contre, repérer les chaines "Wrong password" et "Good Job" est intéressant pour remonter jusqu'au test qui oriente sur l'une ou l'autre (de chaine)
On trouve vite, quelques lignes plus haut le JNE (short) 004010D1.
En regardant les quelques lignes juste au dessus du JNE, on voit vite que le programme récupère les deux chaines "sérial"
--> MOVSX EAX, BYTE PTR DS:[ESI+40A00C] Serial 1
--> MOVSX ECX, BYTE PTR DS:[ESI+40A000] Serial 2
On récupère aussi la chaine entrée par l'utilisateur
--> MOVSX EDX, BYTE PTR SS:[ESI+ESP+4] Chaine entrée par l'utilisateur
Une petite opération méga-magique (on additionne EAX et EBX)
--> ADD EAX,ECX
puis on compare EAX et EDX.
J'ai donc posé un BreackPoint (BP) sur l'opération de comparaison. En analysant/modifiant les registres à la volée, on arrive vite fait à avoir le code.
Surtout que OllyDbg affiche les registres en décimal, hexa et ASCII !!!
J'espère ne pas en avoir trop dit ?