Ida Pro 比较相同函数中的常量与否

逆向工程 艾达 职能 脚本 比较
2021-07-11 00:13:44

如果常量位于相同的函数中,我如何在 IDA PRO 中进行比较。例如,如果我搜索 2 个或更多常量,则从所有常量中过滤我想知道哪个函数包含我想要搜索的所有常量, 消除用其他常量搜索所有常量以找到匹配函数..(这就是我现在这样做的方式,这是非常痛苦的)

常量窗口看起来像这样怎么做我标记坏地址的红线和好的地址的蓝色线哈哈
常数常数2

我怎样做



是否有任何脚本甚至更好的插件可以让我更轻松地完成这项工作?

1个回答

当你想做这样的事情时,IDAPython 是你要走的路。我会说这样的事情应该有效:

CONST_1 = "1234h"
CONST_2 = "ABCDh"
for func in Functions():
    got_first, got_second = False, False
    func_start = GetFunctionAttr(func,FUNCATTR_START)
    func_end = GetFunctionAttr(func,FUNCATTR_END)
    for ea in Heads(func_start, func_end):
        cur_line = GetDisasm(ea)
        got_first |= CONST_1 in cur_line
        got_second |= CONST_2 in cur_line
        if got_first and got_second:
            print "Found a match at 0x{:08x}".format(func_start)
            break

如果您的二进制文件非常大并且花费的时间太长,您可能会考虑优化与操作数的比较。