如何调查跨一批目标的函数调用?

逆向工程 反编译 恶意软件 自动化
2021-06-18 04:01:22

假设我有 N 个可执行文件的集合,其中 N 大到足以使重复的手动分析变得乏味。我想处理所有这些文件并提取有关某些函数调用的信息,例如从恶意软件分析的角度来看,知道调用中使用了哪些常量参数OutputDebugString会很有趣,我猜对于漏洞研究可能有应用程序,例如格式字符串。

动态方法最简单,但在处理恶意软件时存在代码覆盖率和开销问题。我更喜欢静态方法,如果有人有任何经验可以分享,我会很感兴趣。我正在考虑编写 IDA/HexRays 脚本来运行每个二进制文件,尝试生成一个 C 文件并对输出进行 grep,但这可能效率很低。

1个回答

我希望我有一个简单的方法来帮助你。当我以前做类似的事情时,我使用了distormpefile基本上,我在代码中采用的方法(不可否认,它不是一个好方法)是:

  1. 遍历可执行文件的 IAT 以定位感兴趣的函数。
  2. 对可执行文件执行递归下降反汇编以查找对该函数的调用。
  3. 使用最近的反汇编指令检查参数是什么。

回想起来,学习 IDA 脚本本来可以为我节省大量时间和精力,但我很冷静。如果您要走相同的路线,我建议编写 IDA 脚本。虽然,我不确定您是否需要先使用 Hex-Rays 将其转换回 C 代码。