2012-01-27 5 views
2

Cette application est le premier défi d'application sur le site hackthissite.org.Reverse engineering Simple Application avec IDA Pro 5

L'idée est de trouver la série. Lorsque vous entrez le numéro de série et appuyez sur OK, il affiche une boîte de message avec un mot de passe pour le défi si elle est correcte, ou un message indiquant que la série est erronée. Pour résoudre le défi, vous êtes censé trouver le mot de passe qui est en clair dans le binaire à 0x1670FE.

J'essayais de trouver IDA Pro où la chaîne que vous entrez est comparée à la série dans le binaire.

Je veux être en mesure de trouver où il est comparé, être en mesure de changer le saut pour lui permettre d'accepter un mauvais mot de passe, ou le changer afin qu'il accepte tout mot de passe.

Je ne peux pas sembler faire ceci. J'ai trouvé où la boîte de message est montrée (en recherchant la boîte de message et en ajoutant des points d'arrêt), où elle pousse les adresses des chaînes "désolées" ou "correctes" sur la pile.

J'ai essayé d'ajouter des points d'arrêt sur les adresses de ces chaînes et sur la série elle-même, mais cela ne semble pas fonctionner. IDA ne semble pas les reconnaître comme des chaînes, elles n'apparaissent pas dans la fenêtre de piqûre.

J'ai également essayé de suivre cette fonction, mais j'arrive à un point où je ne peux pas sembler revenir en arrière.

Toute aide, information ou conseil serait grandement apprécié. Je veux vraiment savoir comment résoudre ce genre de problème. Désolé, c'est une question très simple.

Merci.

+1

Pourquoi publiez-vous un lien vers un binaire qui est censé être disponible à partir d'une source plus connue? – Steve

+0

@paxdiablo - si je pouvais +1 "modifier", vous obtiendriez mon +1. – Steve

+0

Je suppose que le site nécessite une inscription. – iabdalkader

Répondre

2

Je n'étais pas capable de résoudre ce problème en utilisant IDA Pro, alors j'ai essayé avec Ollydbg. En réglant la série sur quelque chose comme "TEST", après avoir appuyé sur Authenticate, j'ai pu trouver cette chaîne en mémoire ou la série elle-même. En réglant un point d'arrêt sur l'accès à la mémoire série, j'ai été capable de travailler en arrière et de trouver la fonction comparestring où il a comparé les deux chaînes.

Un peu plus tard, il vérifie si edx est supérieur à 2 et effectue un saut. Je mets cela à un saut inconditionnel et un peu plus tard, il semble vérifier à nouveau si les cordes sont de la même longueur, ce que je définis toujours vrai aussi.

Maintenant le programme donne le mot de passe indépendamment de ce que vous entrez. De manière intéressante, il semble qu'il y ait 5/6 séries valides, que peut-être cela génère de celui en mémoire ou de quelque part d'autre. Lorsque vous entrez une série invalide, elle la compare à chacune des publications en série jusqu'à ce qu'elle trouve une correspondance, puis affiche la boîte de message pour la réussite ou l'échec.

Il était dommage que je ne pouvais pas trouver la réponse à cela dans IDA Pro, mais je pense que ollydbg était le meilleur outil pour le travail.

Si je retournais à l'IDA et regardais à nouveau, je serais probablement maintenant en mesure de trouver le chèque.

1

Il y a un HINT donné, probablement vous n'avez peut-être pas remarqué. C'est dire que le mot de passe est au format texte.
Alors pouvez-vous essayer de trouver plus sur la façon de connaître les chaînes à l'intérieur d'un binaire.
L'ingénierie inverse n'implique pas toujours l'ouverture avec un désassembleur ou un débogueur.
Il existe des commandes comme les chaînes, hexdump etc., en savoir plus sur cela.
J'espère que ça aide. :)