如何提取PE文件的静态API序列?

逆向工程 艾达 静态分析 职能 接口
2021-06-28 20:29:30

如何提取PE文件的静态API序列?我的意思不是在进口部分列出的进口。

我目前正在使用不同的 RE 工具,如 Ghidra、IDA Pro 和 Binary Ninja。我所知道的没有一个内置功能允许我提取静态 API 序列。

[编辑] 我正在寻找不执行二进制文件的 API 调用序列。例如,如果二进制代码包含文件操作,如 fopen() → fwrite() → fclose() → fopen() → fwrite() → fclose()。我希望能够提取这个 API 序列。

1个回答

使用 IDAPython 或 IDC 在 IDA 中解决这个问题应该相当容易。

我记得根据内部发生的 API 调用命名函数的插件,以便快速概览,这里有一个示例:

查找函数中的所有 API 调用

本质上它可以满足您的需求,但请注意,没有任何语义检查。这只是意味着这些 API 调用出现在同一个函数中并且可能完全不相关,但它粗略地概述了一起发生的 API 调用链(通过在同一个函数中的逻辑)。

如果关系很重要,那么这是一个更难的问题,因为您需要跟踪 API 调用的输入/输出(并为此知道每个 API 调用的输入/输出是什么),从而变成数据流分析问题。