-
-
[IDA使用技巧]#007: IDA命令行选项速查表
-
发表于: 2024-3-14 11:24 3235
-
翻译:梦幻的彼岸
原文地址:d76K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Z5k6i4S2Q4x3X3c8J5j5i4W2K6i4K6u0W2j5$3!0E0i4K6u0r3j5X3I4G2k6#2)9J5c8X3W2Y4L8%4u0Q4x3X3c8@1K9i4m8Q4x3X3c8G2k6W2)9J5k6s2c8Z5k6g2)9J5k6s2N6W2k6h3E0Q4x3X3b7H3y4#2)9J5k6r3W2V1j5g2)9J5k6r3y4G2L8h3#2S2L8X3c8Q4x3X3c8D9K9h3&6W2i4K6u0V1L8%4m8@1K9h3!0F1M7#2)9J5k6r3y4Z5k6h3q4@1M7$3S2W2k6i4c8Q4x3V1j5`.
大多数 IDA 用户可能将 IDA 作为独立应用程序运行,并使用用户界面配置各种选项。不过,也可以向 IDA 传递命令行选项,以自动完成某些部分的操作。完整选项相当长,因此我们只介绍比较常用和有用的选项。
在下面的示例中,对于 64 位文件,可以用ida64代替ida,对于控制台(文本模式)用户界面,可以用idat(idat64) 代替 ida。
在 IDA 中打开文件即可
ida <filename>
<filename[文件名]>可以是要反汇编的新文件,也可以是现有的数据库。这种用法与使用 "文件">"打开 "或将文件拖放到 IDA 图标上的方法基本相同。你仍然需要手动确认 "加载文件 "对话框或 IDA 显示的任何其他提示中的选项,但跳过了最初的闪屏。
如果使用了其他命令行选项,请确保将其放在文件名之前,否则会被忽略。
打开文件并自动选择加载器
ida -T<prefix> <filename>
其中<prefix[前辍]>是加载文件对话框中显示的加载程序说明的唯一前缀。例如,在加载 .NET 可执行文件时,IDA 会提供以下选项:
- Microsoft.Net 程序集
- 用于 AMD64 的可移植可执行文件 (PE)
- MS-DOS 可执行文件 (EXE)
- 二进制文件
对于每一种情况,相应的 T 选项可能是
- -TMicrosoft
- -TPortable
- -TMS
- -TBinary
当前缀包含空格时,请使用引号。例如,从Fat Mach-O 文件加载第一个片段:
ida "-TFat Mach-O File, 1" file.macho
在前缀包含空格时,请使用引号。例如,要加载来自fat Mach-O文件的第一个片段:
ida -TZIP:classes.dex:Android file.apk
不过,通常最好在顶层选择 APK 加载器(尤其是在多 Dex 文件的情况下)
ida -TAPK file.apk
指定-T时,将跳过初始加载对话框,IDA 将直接使用指定的加载器加载文件(但仍可能显示其他提示)。
自动接受任何提示、信息或警告
有时,你只想加载文件并接受所有默认设置。在这种情况下,可以使用 -A 参数:
ida -A <filename>
这将使用自主 或 批处理模式加载文件,在这种模式下,IDA 不会显示任何对话框,而是在任何情况下都接受默认答案。
在此模式下, 加载完成后不会 显示任何 交互式对话框(例如,连 "重命名 "或 "添加注释 "都不会显示)。要恢复交互性,请在 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>