IDA-Pro-tips

7、IDA 命令行选项手册

大多数 IDA 用户可能将 IDA 作为独立应用程序运行,并使用 UI 来配置各种选项。但是,可以将命令行选项传递给 IDA 以对某些选项进行自动化配置。全部选项很长,所以我们将介绍更常见和有用的选项。

在下面的示例中,可以将 ida 替换为 ida64(用于 64 位文件)或 idat (idat64) 用于控制台(文本模式)UI。

仅在 IDA 中打开一个文件

ida <filename>

<filename> 可以是您想要反汇编的新文件或现有数据库。这种用法与使用 File > Open 或将文件拖放到 IDA 的图标上基本相同。您仍然需要手动确认 Load File 对话框中的选项或 IDA 显示的任何其他提示,但会跳过初始启动屏幕。

如果您使用任何其他命令行选项,请确保将它们放在文件名之前,否则它们将被忽略。

打开文件并自动选择加载程序

ida -T<prefix> <filename>

其中 <prefix> 是加载文件对话框中显示的加载程序描述的唯一前缀。例如,在加载 .NET 可执行文件时,IDA 提供以下选项:

对于它们中的每一个,对应的 -T 选项分别是:

当前缀包含空格时,需要使用引号。例如,从一个 fat Mach-O file 中加载第一个切片:

ida "-TFat Mach-O File, 1" file.macho

对于 ZIP 等归档格式,您可以在冒号后指定要加载的归档成员(以及需要嵌套的其他加载程序名称)。例如,从 .apk(一个 zip 文件)加载主 dex 文件:

ida -TZIP:classes.dex:Android file.apk

但是,通常最好在顶层选择 APK 加载器(尤其是在多个 dex 文件的情况下)

ida -TAPK file.apk

当指定 -T 时,会跳过初始加载对话框,IDA 直接使用指定的加载器加载文件(但仍可能会显示任何附加提示)。

自动接受任何提示、信息性消息或警告

有时您只想加载文件并简单地接受所有默认设置。在这种情况下,您可以使用 -A 选项:

ida -A <filename>

这将使用自主或批处理模式加载文件,其中 IDA 不会显示任何对话框,但在所有情况下都采用默认选项。

在这种模式下,加载完成后不会显示任何交互式对话框(例如,甚至“Rename”或“Add comment”)。要恢复交互性,请在 IDA 窗口底部的 IDC 或 Python 控制台中执行 batch(0) 语句。

批处理反汇编

这是上一节的扩展,使用 -B 选项调用批处理反汇编:

ida -B <filename>

IDA 将使用所有默认选项加载文件,等待自动分析结束,将反汇编输出到 <filename>.asm 并在保存数据库后退出。

二进制文件选项

在加载原始二进制文件时,IDA 不能使用以 ELF、PE 或 Mach-O 等高级文件格式存在的任何元数据。特别是,处理器类型加载地址不能从文件中推断出来,必须由用户提供。为了加快您的工作流程,您可以在命令行中指定它们:

ida -p<processor> -B<base> <filename>

<processor> 是 IDA 支持的处理器类型之一。一些处理器还支持在冒号后给出更具体的选项。

<base> 是段中的十六进制加载基数(16 字节数量)。实际上,这意味着您应该从完整地址中删除最后一个零。

例如,要在线性地址 0xBFC00000 加载大端 MIPS 固件:

ida -pmipsb -bBFC0000 firmware.bin

一个映射在 0x4000 处的 Cortex-M3 固件:

ida -parm:ARMv7-M -b400 firmware.bin

日志

当 IDA 自主运行时,您可能会错过通常打印在输出窗口中的消息,它们可能包含重要的信息性消息、错误或警告。为了保留上述消息的副本,您可以使用 -L 选项:

ida -B -Lida_batch.log <filename>


via: https://hex-rays.com/blog/igor-tip-of-the-week-07-ida-command-line-options-cheatsheet/

作者:Igor Skochinsky 译者:cease2e 校对:firmianay