Question:
Comment identifier les appels de fonction lors du démontage d'IDA Pro?
clark
2013-05-28 21:36:24 UTC
view on stackexchange narkive permalink

Je fais de la rétro-ingénierie du code à partir duquel IDA a généré le désassemblage suivant. Ces lignes de code spécifiques ne sont données qu'à titre indicatif. Notez que la troisième ligne n'appelle pas une fonction spécifique par son nom mais plutôt par son adresse.

  mov rcx, [rsp + 128h + var_D8] // reg CX obtient l'adresse au pointeur de pile + 128h + var_D8 octets mov r8, [rcx] // l'adresse à reg CX est stockée dans reg r8call qword ptr [r8 + 18h] // à l'adresse rax + 18h, fonction d'appel définie par qword octets  

Je suis intéressé à déterminer quelle fonction est appelée. Quels mécanismes, outils, astuces, etc. puis-je utiliser pour déterminer à quelle fonction du désassemblage un appel qword ptr <address> fait référence? Je suis prêt à essayer d'autres programmes de désassemblage.

D'après une réponse à ma question précédente, ceci est connu comme un "appel indirect" ou (peut-être un "appel de fonction virtuelle" ). Le démontage en a beaucoup, alors comment les résoudre? En outre, l'IDA a identifié des centaines de fonctions. Comment puis-je déterminer lequel était réellement appelé lors d'un appel indirect (ou virtuel) donné?

Un répondre:
0xea
2013-05-28 21:52:45 UTC
view on stackexchange narkive permalink

Le moyen le plus simple de découvrir la fonction en question serait probablement une analyse dynamique. Vous pouvez facilement le faire en plaçant un point d'arrêt sur cette instruction dans un débogueur et en examinant les registres.

Une solution plus générale impliquerait probablement un script pour enregistrer tous les appels et ajouter ces informations à la base de données IDA. Le plugin Funcap fait quelque chose de similaire sinon exactement ce que vous recherchez:

Ce script enregistre les appels de fonction (et retourne) à travers un exécutable à l'aide de l'API de débogage IDA, avec tous les arguments sont passés. Il sauvegarde les informations dans un fichier texte et les insère également dans les commentaires en ligne de l'IDA. De cette façon, l'analyse statique qui suit généralement l'analyse comportementale d'exécution lors de l'analyse des logiciels malveillants peut être directement alimentée par des informations d'exécution telles que des chaînes déchiffrées renvoyées dans les arguments de la fonction.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...