Attaquons la phase 3!

On remarque dans l'asm de la fonction qu'elle attend un digit, suivit d'un caractère, suivit d'un autre digit.
Si l'on s'attarde sur la comparaison qui à lieu 4 lignes plus bas ( 0x08048BBF
) et qu'on lit le manuel de la fonction scanf
(en version 32 bits) on découvre que pour cette fonction aussi il y a une vérification du nombre d'inputs, puisque le retour de scanf
est le nombre d'input lu (en partant de zéro).

Lorsque l'on débug le programme on se rend compte que la vérification est faite dans une switch case à 8 possibilités.
Une chose intéressante à noter est cette comparaison:

Son rôle est de vérifier que la première input est bien un choix possible du switch case, donc que ce soit une valeur numérique comprise entre 0 et 7.
Ensuite on passe sur une structure de test assez simple, d'abord vérification de la lettre et ensuite vérification du second digit.

Le choix de la structure de test qui sera utilisée dépend de la valeur de la première input. Par exemple si l'input est 1 b 214
alors le premier testcase du switch est utilisé, si c'est 3 k 251
alors c'est le 3eme testcase du switch qui est utilisé.
Il existe donc plusieurs réponses à ce challenge. Comme vous pouvez vous en douter, 1 b 214
et 3 k 251
sont 2 possibilités sur les 7.
Revenons sur la structure à l'intérieure du switch case:
Pour simplifier je vais illustrer le test de contrôle avec le cas où l'input est 1 b 214
Une fois le premier test effectué (et donc le testcase du switch case déterminé), le programme compare notre second argument avec une valeur contenue dans le registre bl
(partie basse du registre ebx).


Si on fait un peut attention, ce registre est rempli juste avant le premier test.

Donc maintenant on sait que la comparaison est faite avec la valeur 0x62
et que c'est une lettre donc: notre seconde input doit être un b
.
La suite et fin est assez simple puisque le programme se contente de comparer notre second digit avec une valeur en hexadécimale: ici un 0xd6
soit 214
.

Et voila la 3éme partie de cette bombe logique désamorcée.

Social et Media
Comme toujours je suis disponible sur Twitter et cie, si vous avez des questions, des remarques, des suggestions etc. N’hésitez pas !
Twitter: @GhostAgs
Discord: hackraw