在 IDA 中的所有引用上设置断点

逆向工程 艾达 蟒蛇
2021-07-01 19:54:42

有没有办法像我们在 OllyDBG 中“在每个引用上设置断点”一样,一键在所有引用上设置断点?

例如:在找到 CreateFileA API 并按“x”查看所有引用后,我们可以看到此函数的所有调用在哪里......但是有没有办法一键设置所有调用的 bps ?

1个回答

我不知道 IDA 中是否存在这种能力,但是您可以使用 IDAPython 进行如下操作:

#I didn't check this code, use carefully, beware of errors

import idc
import idaapi
import idautils

def set_breakpoints_on_calls(ea):
    print "Setting breakpoints on ", hex(ea)
    for ref in idautils.CodeRefsTo(ea, 0):
        print "Adding bpt on ", hex(ref)
        idc.AddBpt(ref)

def set_breakpoints_on_screen_ea():
    print "Started"
    set_breakpoints_on_calls(idc.ScreenEA())

idaapi.add_hotkey("Alt-Z", set_breakpoints_on_screen_ea)

通过从执行脚本窗口运行此代码,您将添加热键 Alt-Z,它将断点设置为对光标所在地址的所有调用。您可以将此代码添加到idapythonrc.pyIDA 根文件夹中的文件中,以使此快捷方式持久化(您需要在它之后重新运行 IDA)。