带指令的 IDA Pro 函数列表

逆向工程 艾达 蟒蛇
2021-06-17 06:29:49

我在 IDA Pro 中有一个包含大量函数的 DLL。我想制作一个脚本,该脚本可以扫描每个函数中的指令以寻找特定指令。对于我现在的具体情况,我正在寻找左移 (shl) 的函数。我不确定哪个寄存器正在被转移,所以我想保持它的通用性。我确实知道在这种特定情况下它只会移动一个位置。

我在非常基础的层面上了解 Python,我在不存在的层面上了解 IDA-Python。请帮助我提供有关如何在 IDA 中访问这些数据的建议。

编辑:
我已经通读了这个问题,它说没有直接访问 IDA 发现的函数列表。您必须指定一个起始函数地址。有没有更好的方法来列出函数?

2个回答

在反汇编窗口的文本视图中,按Alt + T在“文本搜索”窗口中,搜索shl并检查Find all occurrences

文本搜索窗口

OK,您将获得包含shl以下所有功能的列表

出现次数:shl

最好的办法是使用 IDAPython API 来做到这一点。

要遍历所有函数,您可以执行以下操作

from idautils import *
from idaapi import *

ea = BeginEA()
for funcea in Functions(SegStart(ea), SegEnd(ea)):
    functionName = GetFunctionName(funcea)
    functionStart = "0x%08x"%funcea
    functionEnd = "0x%08x"%FindFuncEnd(funcea)
    # ...

当您拥有函数的开始和结束时,您可以遍历其间的所有有效地址并使用 GetMnem() 获取该地址上的指令。当然,您需要处理一些特定情况、指令大小等,但这是总体思路。