Question:
Traiter le code indépendant comme une fonction dans IDA Pro
amccormack
2013-03-27 05:13:19 UTC
view on stackexchange narkive permalink

Lors de la rétro-ingénierie des programmes, je trouve souvent des fonctions comme celle ci-dessous. Cette fonction en particulier a un ensemble de blocs if / else imbriqués (boîtes roses) qui seraient généralement assez faciles à suivre. Cependant, lorsque le code s'exécute dans la case bleue, le code devient désordonné et peut prendre l'un des deux chemins de code indépendants (violet ou jaune). Si le développeur avait utilisé une fonction (ou pas utilisé une fonction en ligne) pour les blocs de code violet ou jaune, ce code serait beaucoup plus facile à rétroconcevoir. En tant que fonction, je peux renommer et commenter le bloc de code, et le programme global devient plus facile à lire.

Ma technique habituelle lorsque je rencontre ce genre de fonction est d'appliquer des couleurs aux blocs de code comme vous voyez dans le graphique ci-dessous. Y a-t-il un moyen pour IDA de traiter une collection arbitraire de blocs de code comme une fonction qui n'est pas appelée et / ou existe-t-il de meilleures approches pour gérer le code en ligne et les blocs de code indépendants?

Large function

Un répondre:
#1
+10
Igor Skochinsky
2013-03-27 06:25:07 UTC
view on stackexchange narkive permalink

Il semble que vous ayez besoin de groupes de nœuds. Depuis la toute première implémentation (5.0), la vue graphique d'IDA a permis de regrouper plusieurs nœuds en un "super-nœud" avec un titre personnalisé. Sélectionnez simplement les nœuds que vous souhaitez regrouper en maintenant la touche Ctrl enfoncée et choisissez "Grouper les nœuds" dans le menu contextuel.

Pour plus d'informations, voir "Graphiques de groupes de nœuds" dans l'aide d'IDA ou en ligne.

Sur une note séparée, il serait utile de mettre votre contribution sur le sujet-ness / hors-sujet-ness ici http://meta.reverseengineering.stackexchange.com/q/7/189
Quel est probablement hors sujet, ma question ou votre réponse?
@amccormack La question, puisqu'elle n'implique pas la rétro-ingénierie elle-même mais "comment utiliser un outil RE". Mais je suppose que nous pourrions poser de telles questions sur le sujet. Veuillez ajouter vos commentaires [ici] (http://meta.reverseengineering.stackexchange.com/questions/52/).
@IgorSkochinsky: autant que j'aime (et comme vous le savez;)) pour souligner que cela ne devrait pas être trop biaisé vers un outil particulier, je pense que ces questions devraient être sur le sujet. J'y ai ajouté mon "commentaire" et j'espère que beaucoup d'autres le feront. Btw: vous êtes déjà à la hauteur de ce que j'espère sera votre position bientôt;) ... voir aussi: http://meta.reverseengineering.stackexchange.com/questions/7
@IgorSkochinsky: Je ne suis pas sûr en soi, mais sur la plupart des sites SE, il est mal vu de simplement poster un lien sans citer au moins une partie vitale.
@IgorSkochinsky Je pense que ma question ne s'applique pas à la méta-discussion que vous avez énumérée. Mais je comprends l'hésitation, alors j'ai créé une nouvelle méta-question [Demande des outils de rétro-ingénierie sur le sujet] (http://meta.reverseengineering.stackexchange.com/questions/66/is-asking-about-reverse-engineering-tools -sur le sujet)
D'accord, tous les bons points, laissez-moi le modifier un peu ...


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...