From 31702a29453776a981fe07e3671d499bd50b0292 Mon Sep 17 00:00:00 2001 From: cease2e <33804155+cease2e@users.noreply.github.com> Date: Wed, 28 Sep 2022 17:38:13 +0800 Subject: [PATCH] add 7-ida-command-line-options-cheatsheet (#6) * add 7-ida-command-line-options-cheatsheet * fix 7 Co-authored-by: firmianay --- SUMMARY.md | 1 + docs/7-ida-command-line-options-cheatsheet.md | 101 ++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 docs/7-ida-command-line-options-cheatsheet.md diff --git a/SUMMARY.md b/SUMMARY.md index ace9d09..7329a8e 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -9,3 +9,4 @@ GitHub 地址: - [4、更多的选择操作](docs/4-more-selection.md) - [5、高亮操作](docs/5-highlight.md) - [6、IDA 发行说明](docs/6-ida-release-notes.md) +- [7、IDA 命令行选项手册](docs/7-ida-command-line-options-cheatsheet.md) diff --git a/docs/7-ida-command-line-options-cheatsheet.md b/docs/7-ida-command-line-options-cheatsheet.md new file mode 100644 index 0000000..0f7c169 --- /dev/null +++ b/docs/7-ida-command-line-options-cheatsheet.md @@ -0,0 +1,101 @@ +[#]: translator: "cease2e" + +7、IDA 命令行选项手册 +======= + +大多数 IDA 用户可能将 IDA 作为独立应用程序运行,并使用 UI 来配置各种选项。但是,可以将命令行选项传递给 IDA 以对某些选项进行自动化配置。[全部选项][1]很长,所以我们将介绍更常见和有用的选项。 + +> 在下面的示例中,可以将 `ida` 替换为 `ida64`(用于 64 位文件)或 `idat` (`idat64`) 用于控制台(文本模式)UI。 + +### 仅在 IDA 中打开一个文件 + +`ida ` + +`` 可以是您想要反汇编的新文件或现有数据库。这种用法与使用 File > Open 或将文件拖放到 IDA 的图标上基本相同。您仍然需要手动确认 Load File 对话框中的选项或 IDA 显示的任何其他提示,但会跳过初始启动屏幕。 + +> 如果您使用任何其他命令行选项,请确保将它们放在文件名之前,否则它们将被忽略。 + +### 打开文件并自动选择加载程序 + +`ida -T ` + +其中 `` 是加载文件对话框中显示的加载程序描述的*唯一*前缀。例如,在加载 .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 ` + +这将使用自主或批处理模式加载文件,其中 IDA 不会显示任何对话框,但在所有情况下都采用默认选项。 + +> 在这种模式下,加载完成后**不会**显示任何交互式对话框(例如,甚至“Rename”或“Add comment”)。要恢复交互性,请在 IDA 窗口底部的 IDC 或 Python 控制台中执行 `batch(0)` 语句。 + +### 批处理反汇编 + +这是上一节的扩展,使用 -B 选项调用批处理反汇编: + +`ida -B ` + +IDA 将使用所有默认选项加载文件,等待自动分析结束,将反汇编输出到 `.asm` 并在保存数据库后退出。 + +### 二进制文件选项 + +在加载原始二进制文件时,IDA 不能使用以 ELF、PE 或 Mach-O 等高级文件格式存在的任何元数据。特别是,*处理器类型*和*加载地址*不能从文件中推断出来,必须由用户提供。为了加快您的工作流程,您可以在命令行中指定它们: + +`ida -p -B ` + +`` 是 IDA 支持的[处理器类型][2]之一。一些处理器还支持在冒号后给出更具体的选项。 + +`` 是段中的十六进制加载基数(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 ` + +-------------------------------------------------------------------------------- + +via: https://hex-rays.com/blog/igor-tip-of-the-week-07-ida-command-line-options-cheatsheet/ + +作者:Igor Skochinsky +译者:[cease2e](https://github.com/cease2e) +校对:[firmianay](https://github.com/firmianay) + +[1]: https://hex-rays.com/products/ida/support/idadoc/417.shtml +[2]: https://hex-rays.com/products/ida/support/idadoc/618.shtml