飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 335|回复: 1

[其它] [IDA使用技巧]#007: IDA命令行选项速查表

[复制链接]
  • TA的每日心情
    开心
    2019-3-15 11:00
  • 签到天数: 262 天

    [LV.8]以坛为家I

    发表于 2024-3-14 11:30:57 | 显示全部楼层 |阅读模式
    本帖最后由 梦幻的彼岸 于 2024-3-14 11:34 编辑

    翻译:梦幻的彼岸
    原文地址:https://hex-rays.com/blog/igor-t ... options-cheatsheet/
    大多数 IDA 用户可能将 IDA 作为独立应用程序运行,并使用用户界面配置各种选项。不过,也可以向 IDA 传递命令行选项,以自动完成某些部分的操作。完整选项相当长,因此我们只介绍比较常用和有用的选项。
    在下面的示例中,对于 64 位文件,可以用ida64代替ida,对于控制台(文本模式)用户界面,可以用idat(idat64) 代替 ida。
    在 IDA 中打开文件即可


    [AppleScript] 纯文本查看 复制代码
    ida <filename>

    <filename[文件名]>可以是要反汇编的新文件,也可以是现有的数据库。这种用法与使用 "文件">"打开 "或将文件拖放到 IDA 图标上的方法基本相同。你仍然需要手动确认 "加载文件 "对话框或 IDA 显示的任何其他提示中的选项,但跳过了最初的闪屏。

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

    打开文件并自动选择加载器

    [AppleScript] 纯文本查看 复制代码
    ida -T<prefix> <filename>

    其中<prefix[前辍]>是加载文件对话框中显示的加载程序说明的唯一前缀。例如,在加载 .NET 可执行文件时,IDA 会提供以下选项:
    Microsoft.Net 程序集
    用于 AMD64 的可移植可执行文件 (PE)
    MS-DOS 可执行文件 (EXE)
    二进制文件
    对于每一种情况,相应的 T 选项可能是

    -TMicrosoft
    -TPortable
    -TMS
    -TBinary
    当前缀包含空格时,请使用引号。例如,从Fat Mach-O 文件加载第一个片段:
    [AppleScript] 纯文本查看 复制代码
    ida "-TFat Mach-O File, 1" file.macho

    在前缀包含空格时,请使用引号。例如,要加载来自fat Mach-O文件的第一个片段:
    [AppleScript] 纯文本查看 复制代码
    ida -TZIP:classes.dex:Android file.apk

    不过,通常最好在顶层选择 APK 加载器(尤其是在多 Dex 文件的情况下)
    [AppleScript] 纯文本查看 复制代码
    ida -TAPK file.apk

    指定-T时,将跳过初始加载对话框,IDA 将直接使用指定的加载器加载文件(但仍可能显示其他提示)。
    自动接受任何提示、信息或警告
    有时,你只想加载文件并接受所有默认设置。在这种情况下,可以使用 -A 参数:
    [AppleScript] 纯文本查看 复制代码
    ida -A <filename>

    这将使用自主 或 批处理模式加载文件,在这种模式下,IDA 不会显示任何对话框,而是在任何情况下都接受默认答案。
    在此模式下, 加载完成后不会 显示任何 交互式对话框(例如,连 "重命名 "或 "添加注释 "都不会显示)。要恢复交互性,请在 IDA 窗口底部的 IDC 或 Python 控制台中执行batch(0)语句。
    批量拆解
    这是上一节的扩展,使用 -B 参数调用:
    [AppleScript] 纯文本查看 复制代码
    IDA -B <filename>

    IDA 将使用所有默认选项加载文件,等待自动分析结束,将反汇编输出到<filename>.asm中,并在保存数据库后退出。
    二进制文件选项
    在加载原始二进制文件时,IDA 无法使用 ELF、PE 或 Mach-O 等高级文件格式中的任何元数据。特别是,处理器类型和加载地址无法从文件中推导出来,必须由用户提供。为了加快工作流程,可以在命令行中指定它们:
    [AppleScript] 纯文本查看 复制代码
    ida -p<processor> -B<base> <filename>

    <processor[处理器]>是 IDA 支持的处理器类型之一。 某些处理器还支持冒号后的选项。
    <base[基础]>是以段为单位的十六进制加载基址(每16字节为一组)。在实践中,这意味着您应该从完整地址中删除最后一个零。
    例如,要加载线性地址为 0xBFC00000 的大二进制 MIPS 固件,可以使用
    [AppleScript] 纯文本查看 复制代码
    ida -pmipsb -bBFC0000 firmware.bin

    映射到 0x4000 的 Cortex-M3 固件:
    [AppleScript] 纯文本查看 复制代码
    ida -parm:ARMv7-M -b400 firmware.bin

    日志记录
    当IDA独立运行时,您可能会错过通常在输出窗口中打印的消息,但它们可能包含重要的信息消息、错误或警告。为了保留消息的副本,您可以使用-L参数:
    [AppleScript] 纯文本查看 复制代码
    ida -B -Lida_batch.log <filename>
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    昨天 11:08
  • 签到天数: 615 天

    [LV.9]以坛为家II

    发表于 2024-3-14 16:09:24 | 显示全部楼层
    @梦幻的彼岸
    果然是刷版机器怪,过年好,您又回岗工作了。
    您要搞个windbg的命令不愁没有内容编。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表