IDA Python - 查找突出显示的寄存器

逆向工程 蟒蛇
2021-06-19 17:07:19

在 IDA 的 Graph View 中,当我们选择某个寄存器时(例如,esp在下图中),该寄存器出现的每个位置都会突出显示。

是否可以读取所选操作数是什么?(我现在想使用寄存器,但能够知道任何选定的值会很好)。

我能够使用 获取指令的地址idaapi.get_screen_ea(),但无法继续进行。

esp 高亮

2个回答

您可以使用

idaapi.get_highlighted_identifier()

此函数返回突出显示的文本。所有 IDAPython 参考都可以在这里找到,在 Hex-Rays 站点

如果以上在较新版本中不起作用,请尝试 ida_kernwin.get_highlight(ida_kernwin.get_current_viewer())

例子:

Python>ida_kernwin.get_highlight(ida_kernwin.get_current_viewer())
('edx', 0x3)

向后兼容层展示了如何解释返回的元组:

def get_highlighted_identifier():
    thing = get_highlight(get_current_viewer())
    if thing and thing[1]:
        return thing[0]