Last updated
Last updated
大多数 IDA 用户可能将 IDA 作为独立应用程序运行,并使用 UI 来配置各种选项。但是,可以将命令行选项传递给 IDA 以对某些选项进行自动化配置。很长,所以我们将介绍更常见和有用的选项。
在下面的示例中,可以将
ida
替换为ida64
(用于 64 位文件)或idat
(idat64
) 用于控制台(文本模式)UI。
ida <filename>
<filename>
可以是您想要反汇编的新文件或现有数据库。这种用法与使用 File > Open 或将文件拖放到 IDA 的图标上基本相同。您仍然需要手动确认 Load File 对话框中的选项或 IDA 显示的任何其他提示,但会跳过初始启动屏幕。
如果您使用任何其他命令行选项,请确保将它们放在文件名之前,否则它们将被忽略。
ida -T<prefix> <filename>
其中 <prefix>
是加载文件对话框中显示的加载程序描述的唯一前缀。例如,在加载 .NET 可执行文件时,IDA 提供以下选项:
Microsoft.Net assembly
Portable executable for AMD64 (PE)
MS-DOS executable (EXE)
Binary file
对于它们中的每一个,对应的 -T
选项分别是:
TMicrosoft
TPortable
TMS
TBinary
当前缀包含空格时,需要使用引号。例如,从一个 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>
<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/
<processor>
是 IDA 支持的之一。一些处理器还支持在冒号后给出更具体的选项。
作者:Igor Skochinsky 译者: 校对: