Skip to content

Commit

Permalink
add 7-ida-command-line-options-cheatsheet (#6)
Browse files Browse the repository at this point in the history
* add 7-ida-command-line-options-cheatsheet
* fix 7

Co-authored-by: firmianay <[email protected]>
  • Loading branch information
cease2e and firmianay authored Sep 28, 2022
1 parent 228150f commit 31702a2
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 0 deletions.
1 change: 1 addition & 0 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ GitHub 地址:<https://github.com/VulnTotal-Team/IDA-Pro-tips>
- [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)
101 changes: 101 additions & 0 deletions docs/7-ida-command-line-options-cheatsheet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
[#]: translator: "cease2e"

7、IDA 命令行选项手册
=======

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

> 在下面的示例中,可以将 `ida` 替换为 `ida64`(用于 64 位文件)或 `idat` (`idat64`) 用于控制台(文本模式)UI。
### 仅在 IDA 中打开一个文件

`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>`

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

`<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](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

0 comments on commit 31702a2

Please sign in to comment.