我需要在IDAPython中重命名一些内存地址“名称”。我说的是dword_805672格式化的。请查看下面的屏幕截图:



我在要使用IDAPython重命名的名称周围放置了红色框。我搜索了API文档,然后想到了:idc.MakeName(ea,name),但是,正如您所看到的,这仅在标记为dynamic_1dynamic_2等的位置上放置了名称。我想重命名实际的操作数。

#1 楼

idc.MakeName应该是正确的api命令。我假设您执行了类似idc.MakeName(0x123772cd, 'dynamic_3')的操作,而不是在指令中的实际dword上输入了名称。

应该改成这样的方法:

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

在这种情况下,idc.GetOperandValue将返回第零个操作数的值(即0x123ef5e0)。该地址将被标记为“ dynamic_3”,并且IDA应该更新UI以显示更改。

评论


对。就是这样,谢谢。我还没有意识到,操作数本身就具有解决这个问题的地址。您对如何像这样学习API的细节有什么建议吗?这有点不是文档中真正的东西:(

–the_endian
17年11月27日在5:16

我通常会在尝试弄清楚如何完成操作时默认查看idc / idaapy / idautil python文件。除此之外,reverseengineering.stackexchange.com / questions / 11391 /…上的资源还不错。

–班布
17年11月28日在3:33