- 献词
- 致谢
- 前言
- 第一部分 IDA 简介
- 第 1 章 反汇编简介
- 第 2 章 逆向与反汇编工具
- 第 3 章 IDA Pro 背景知识
- 第二部分 IDA 基本用法
- 第 4 章 IDA 入门
- 第 5 章 IDA 数据显示窗口
- 第 6 章 反汇编导航
- 第 7 章 反汇编操作
- 第 8 章 数据类型与数据结构
- 第 9 章 交叉引用与绘图功能
- 第 10 章 IDA 的多种面孔
- 第三部分 IDA 高级应用
- 第 11 章 定制 IDA
- 第 12 章 使用 FLIRT 签名来识别库
- 第 13 章 扩展 IDA 的知识
- 第 14 章 修补二进制文件及其他 IDA 限制
- 第四部分 扩展 IDA 的功能
- 第 15 章 编写 IDA 脚本
- 第 16 章 IDA 软件开发工具包
- 第 17 章 IDA 插件体系结构
- 第 18 章 二进制文件与 IDA 加载器模块
- 第 19 章 IDA 处理器模块
- 第五部分 实际应用
- 第 20 章 编译器变体
- 第 21 章 模糊代码分析
- 第 22 章 漏洞分析
- 第 23 章 实用 IDA 插件
- 第六部分 IDA 调试器
- 第 24 章 IDA 调试器
- 第 25 章 反汇编器/ 调试器集成
- 第 26 章 其他调试功能
- 附录 A 使用 IDA 免费版本 5.0
- 附录 B IDC/SDK 交叉引用
10.2 使用 IDA 的批量模式
所有版本的 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
完全脱离控制台以在后台执行需要对 stdin
和 stderr
进行额外的重定向。
Ilfak 在他的一篇博客文章中谈到批量模式,地址为 http://hexblog.com/2007/03/on_batch_analysis.html 。他还详细说明了如何执行除调用单独一段脚本以外的操作,并讨论了如何在批量模式下运行 IDA 插件。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论