Comment renommer un opérande d'adresse mémoire dans IDAPython?


3

Je dois renommer certains "noms" d'adresse mémoire dans IDAPython. Je parle des formats au format dword_805672. S'il vous plaît voir la capture d'écran ci-dessous:

enter image description here

J'ai placé des boîtes rouges autour des noms que je voudrais renommer avec IDAPython. J'ai recherché les docs de l'API et je suis arrivé avec: idc.MakeName(ea,name) cependant, comme vous pouvez le voir, ceci a seulement placé un nom dans les taches marquées dynamic_1, dynamic_2 et ainsi de suite. Je veux renommer l'opérande actuel.

4

idc.MakeName doit être la commande api correcte. Je suppose que vous avez fait quelque chose comme idc.MakeName(0x123772cd, 'dynamic_3') au lieu de faire le nom de make sur le mot réel dans l'instruction.

Quelque chose comme cela devrait se faire à la place:

idc.MakeName(idc.GetOperandValue(0x123772cd, 0), 'dynamic_3')

Dans ce cas idc.GetOperandValue renvoie la valeur de l'opérande zéro (c.-à-0x123ef5e0.). Cette adresse sera alors appelée «dynamic_3» et l'IDA devrait mettre à jour l'interface utilisateur pour montrer le changement.

  0

Yup. C'était tout, merci. Je n'avais pas réalisé que l'opérande elle-même avait sa propre adresse comme ça pour résoudre ce problème. Avez-vous des conseils sur la façon d'apprendre les petits détails de l'API comme ça? C'est le genre de choses qui ne sont pas vraiment dans les docs :( 27 nov.. 172017-11-27 05:16:34

  0

Je regarde par défaut les fichiers idc/idaapy/idautil python en essayant de comprendre comment quelque chose est fait, en plus de cela, les ressources sur https: // reverseeengineering. stackexchange.com/questions/11391/good-training-for-idapython sont plutôt bons. 28 nov.. 172017-11-28 03:33:45