返回介绍

10.2 使用 IDA 的批量模式

发布于 2024-10-11 21:05:43 字数 1687 浏览 0 评论 0 收藏 0

所有版本的 IDA 都可以在批量模式下运行,以完成自动处理任务。使用批量模式的主要目的是启动 IDA ,使它运行一段特定的 IDC 脚本,并在该脚本完成后立即终止。在批量模式下,你可以使用几个命令行选项控制 IDA 所执行的处理。

GUI 版本的 IDA 并不需要控制台来运行,这使得它们可以非常轻松地合并到几乎任何类型的自动脚本或包装程序中。在批量模式下运行时,GUI 版本的 IDA 并不显示任何图形组件。运行 Windows 控制台版本(idaw.exe 和 idaw64.exe )会生成一个完整的控制台窗口,在批处理结束时,这个窗口会自动关闭。通过将输出重定向到一个空设备(cmd.exe 的为 NUL,在 cygwin 的/dev/null 目录中),可以禁用控制台窗口,如下所示:

C:\Program Files\Ida>idaw -B some_program.exe > NUL

IDA 的批量模式由以下命令行参数控制。

  • -A 选项使 IDA 在自动模式下运行,这表示 IDA 不会显示需要用户交互的对话框。(实际上,如果你从未单击 IDA 的许可协议,那么无论你是否使用这个选项,许可协议对话框都会显示。

  • -c 选项要求 IDA 删除与在命令行中指定的文件有关的任何现有数据库,并生成一个全新的数据库。

  • -S 选项用于指定 IDA 在启动时应运行哪一段 IDC 脚本。运行 myscript.idc 的语法为 -Smyscript.idc (在 S 与脚本名称之间没有空格)。IDA 会在/idc 目录中搜索指定的脚本。如果已经安装 IDAPython, 也可以在这里指定 Python 脚本。

  • -B 选项调用批量模式,它等同于在执行时对 IDA 使用 -A -c -Sanalysis.idc` 。IDA 自带的 analysis.idc 脚本会等待 IDA 分析在命令行中指定的文件,然后再转储反汇编代码的汇编列表(.asm 文件)并关闭 IDA ,以保存和关闭新生成的数据库。

-S 选项实际上是批量模式的关键,因为只有指定的脚本使 IDA 终止,IDA 才会终止。如果脚本没有关闭 IDA ,那么,所有的选项将组合在一起,自动完成 IDA 的启动过程。我们将在第 15 章中讨论如何编写 IDC 脚本。由于 Linux 和 OS X 版本的 IDA 使用的 TVision 库存在限制,批处理必须从 TTY 控制台执行,并且无法进行后台处理(和重定向)。幸好最新版本的 TVision 能识别 TVHEADLESS 环境变量,因而允许重定向控制台输出( stdout ),如下所示:

# TVHEADLESS=1 ./idal –B input_file.exe > /dev/null

完全脱离控制台以在后台执行需要对 stdinstderr 进行额外的重定向。

Ilfak 在他的一篇博客文章中谈到批量模式,地址为 http://hexblog.com/2007/03/on_batch_analysis.html 。他还详细说明了如何执行除调用单独一段脚本以外的操作,并讨论了如何在批量模式下运行 IDA 插件。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文