通过 IDAPython 实现 IDA Pro/IDAPython 自动化

逆向工程 艾达 蟒蛇 idapro插件 bin-diffing 工具bindiff
2021-06-11 11:04:27

我一直在尝试通过 IDAPython 使用 IDA Pro(带有 bindiff)来自动化 bios.dump 文件的分析过程,同时将结果输出到 .txt / .asm 文件。从这里开始,我想使用 bindiff 函数将此数据库与另一个数据库进行比较,并将任何差异输出到文件中。有什么建议吗?

2个回答

使用现在免费的BinDiff 4.2,您可以通过一些工作进行批量分析。

在 BinDiff 安装目录 ( zynamics/BinDiff 4.2) 中,您将找到bin/differ.exebin/differ64.exe这些是用于批量比较 IDB 和.BinExport文件的二进制文件。

基本用法是:

differ --primary=<directory-with-IDBs> --output-dir=<output-directory>

遗憾的是,这不起作用(至少在我的机器上),因为differ.exe无法找到 IDA 的可执行文件并尝试执行该目录。

为了解决这个问题,我们将使用以下命令导出 IDB:

"<path-to-idaq.exe>" -A -OExporterModule:<result-directory> -S"<path-to-export-script>" "<path-to-idb>"

export-script是一个.idc具有以下代码:

#include <idc.idc>

static main()
{
    Batch(0);
    Wait();
    Exit(1 - RunPlugin("zynamics_binexport_8", 2));
}

将所有.BinExport文件都放在一个目录中后,differ.exe在该目录上运行原始命令(将包含.BinExport文件的目录而不是文件指定给它.idb),您将获得.BinDiff所有可能差异的文件。这些可以在 IDA 中打开,也可以手动解析(它们是 SQLite 数据库)。

如果您询问在批处理模式下使用 BinDiff:抱歉,您不能。这是故意限制的。