IDA Pro 9.4 带来更广泛的处理器与平台支持
IDA Pro 9.4 (macOS, Linux, Windows) - 强大的反汇编程序、反编译器和多功能调试器
A powerful disassembler, decompiler and a versatile debugger. In one tool.
请访问原文链接:https://sysin.org/blog/ida-pro/ 查看最新版。原创作品,转载请保留出处。
作者主页:sysin.org
IDA Pro
一个强大的反汇编程序、反编译器和多功能调试器。集成在一个工具中。

IDA 9.4:更广泛的处理器与平台支持
IDA 9.4 带来了全新的 Qualcomm Hexagon DSP 处理器模块、覆盖 C-SKY V1 的 MCore 家族支持,以及对 ARM、TriCore 和 RISC-V 的更深入支持。
Qualcomm Hexagon(QDSP6)
新增了 Qualcomm Hexagon 处理器模块。如果你正在逆向 Snapdragon 固件(音频与计算 DSP、基带 Modem 或较新的 NPU 镜像),IDA 现在能够对其进行反汇编与分析,并提供对 ELF 及 Qualcomm MBN 容器格式的加载支持。

关于 Hexagon,需要特别说明几点:
- 指令以并行包(Packet)的形式执行,每个包最多包含四条指令。IDA 会使用大括号显示每个指令包,并解析双工指令(一个机器字中包含两条子指令)以及
.new操作数。 - 支持零开销硬件循环(Zero-overhead Hardware Loops),以
:endloop0/:endloop1标记。 - 支持感知指令包的控制流分析。一个指令包中可以包含多个分支指令。
输出格式可自定义。通过处理器选项,你可以将大括号单独显示在新行、显示槽位标签(Slot Labels),或为 .new 生产者添加注释。

MCore 与 C-SKY V1
在 9.4 中,借此机会加入了对 C-SKY V1 的支持。它源自 Motorola/Freescale M-CORE,并与其高度兼容,因此两者共用同一个解码器。

该模块支持:
- 栈变量跟踪(Stack-variable Tracking),能够恢复函数栈帧并为局部变量命名。
- 以
= symbol形式显示字面量池(Literal Pool)加载,同时解析池项及其交叉引用(例如lrw r7, =aBootseqNormal)。 - 基于重定位信息生成交叉引用,并改进函数识别能力。
C-SKY V1 支持覆盖 CK510、CK610、CK610E 和 CK620 内核,包括协处理器指令以及 DSP/乘法指令,同时支持大小端模式。
ELF 加载器能够自动识别 C-SKY 二进制文件,并处理 MCore/C-SKY 重定位。

ARM:完整支持 SVE 与 SME
在 IDA 9.3 中,仅支持 Apple 内核中常见的部分 SVE/SME 指令集。而在 9.4 中,实现了完整支持:
- 完整的 AArch64 SVE
- SVE2
- SME
- SME2
包括可扩展向量寄存器(Z)、谓词寄存器(P)、SME2 多向量及索引操作,以及 MUL VL 寻址方式。

ARM 架构检测会根据二进制文件声明的架构及属性自动选择合适的 SVE/SME 配置:
- ARMv8.2 默认启用 SVE
- ARMv9 默认启用 SVE2
- 通用 AArch64 默认启用 SVE2 + SME2
如果自动检测结果不正确,可以在处理器选项中手动覆盖,或者完全禁用这些扩展。

同时还引入了两项 ABI 改进:
- 现在可从 ELF 文件自动推断 VFP(HardFloat)ABI。
- 对于 ARM32 Windows 二进制文件,IDA 默认采用 AAPCS-VFP ABI。
此外还有一些较小的反汇编修复:
- 将
STM SP识别为多槽位栈参数存储操作。 - 修复 AArch64 的
UDF指令解码问题。 - 改进 64 位
TBB风格跳转表恢复能力。
TriCore:调用约定与分析能力增强
TriCore 是 Infineon AURIX 系列的核心架构,也是汽车 ECU 中占主导地位的微控制器平台。
在 9.4 中,为 TriCore 模块引入了真正的类型系统和显式调用约定模型。IDA 现在能够理解参数和返回值如何分布于 TriCore 的寄存器组中,因此在分析 AURIX 固件时,函数原型、参数类型和交叉引用都会更加准确。
这也是未来反编译器支持的重要基础,同时已经能显著提升当前的反汇编体验。
✅ 调用约定模型
TriCore 通常将前几个整数或指针参数放置在数据寄存器和地址寄存器组(D4–D7、A4–A7)中,其余参数则通过栈传递。
IDA 现已直接建模这一行为:
- 自动计算参数位置
- 自动确定返回值位置
- 自动处理可变参数布局(VarArgs)
- 根据 ABI 要求在 D/A 寄存器组之间分配参数

处理器选项中可选择两种常见 ABI:
- GCC/HighTec EABI
- TASKING ABI
两者在部分参数和返回值分配方式上存在差异。
IDA 会在分析过程中自动尝试识别 ABI,但用户也可以通过:
Options → Compiler... → ABI name
手动切换。

✅ 更精准的反汇编分析
除了 ABI 支持外,还改进了多个分析流程:
- 更强的跳转表识别能力,包括 16 位相对偏移跳转表。
- 重构重定位处理逻辑,支持更多重定位类型,并生成更准确的交叉引用。
✅ AURIX TC4x 设备支持
新增内置内存映射和外设寄存器定义,支持最新 AURIX TC4x 设备:
- TC45x
- TC48x
- TC49xN
- TC4Dx
选择对应设备后,IDA 会自动构建片上内存映射并为特殊功能寄存器命名,使固件中的外设访问显示为:
CAN_17_MCMCAN_F0SA
而不是单纯的原始地址。

RISC-V:厂商扩展与嵌入式核心支持
RISC-V 正持续扩展到安全芯片和微控制器领域,而厂商自定义扩展生态也在快速增长。
在 9.4 中,进一步扩大了对这些场景的支持。
✅ Soteria
Soteria(Xsoteria)是一种常见于安全芯片固件中的自定义 RISC-V 扩展。

这些操作码与其他厂商扩展存在重叠(例如 Andes 的 XAndesPerf 扩展使用相同编码)。
因此,仅凭机器码,IDA 并不总能判断具体属于哪个扩展。
为了避免误判,IDA 会:
- 按当前配置的扩展进行解码;
- 同时将另一种可能的解释显示为注释(
alt Xsoteria/alt XAndesPerf)。
这样分析人员若基于错误假设工作,可以立即发现问题。
较复杂的 Soteria 指令会提升(Lift)到微代码层,并以内建函数(Intrinsic)形式出现在伪代码中;而常量参数形式则会被本地折叠优化。
伪代码:
unsigned __int32 __fastcall test_grevi_bswap(unsigned __int32 a1)
{
return _soteria_grevi(a1, 0x18u);
}
int __fastcall test_clear_highbit(unsigned __int32 a1)
{
return a1 & ~(1 << _soteria_fls(a1));
}
✅ Hazard3 / RP2350
Hazard3 是 RP2350(Raspberry Pi Pico 2)所采用的 RISC-V 核心。
IDA 现已支持其自定义指令,包括:
- 多 Hart(多核)同步原语
- RP2350 专有扩展
RP2350 固件能够被顺利反编译,甚至 SDK 中的 GPIO 辅助函数也能正确恢复。

✅ 压缩指令支持
压缩 ISA 支持进一步扩展,新增:
- Zcmp
- Zcmt
- Zclsd
- Zcb
- Zihintntl
以及 Semihosting 识别能力。
压缩指令现在会明确显示 c. 前缀,例如:
c.addi
c.sw
c.j
从而能够一眼识别出哪些是 16 位压缩指令。
✅ 完整 HINT 指令解码
IDA 现已支持完整的 RISC-V HINT 指令空间,包括:
- 标准 Hint
- Pause
- NTL
- Semihosting 标记
- 厂商保留编码
可以将 HINT 理解为一种“无操作但有提示意义”的指令,用于向 CPU 传递缓存、暂停等信息,而不会改变程序状态。
IDA 会自动为这些指令添加注释。
例如:
反汇编:
add zero, ra, sp # standard hint
srai zero, zero, 7 # semihosting exit
slti zero, ra, 1 # custom hint
✅ 调试器:改进远程与嵌入式调试体验
前面提到的新型芯片最终都需要进行调试,而嵌入式和 DSP 平台通常通过:
- JTAG
- gdbserver
- 远程 GDB Stub
完成调试。
在 9.4 中,重新梳理了 IDA 的 GDB Remote Serial Protocol(RSP)客户端,使其更加符合规范,并提升与第三方及嵌入式调试 Stub 的兼容性,同时增加了多项针对微控制器开发的便利功能。
- 新增 RISC-V 调试器配置支持。
- 对于 Flash 区域地址自动使用硬件断点,因为软件断点无法写入 Flash。
- 当调试 Stub 支持时,自动使用二进制
x/X内存传输。 - 支持通过
qXfer:libraries-svr4:read、完整qXfer:libraries:readXML 格式以及qXfer:memory-map:read自动发现库与内存映射。 - 当进程启动失败时,IDA 会显示真实失败原因。
总结
总体而言,IDA 9.4 进一步扩展了对嵌入式处理器和 DSP 平台的支持范围。
这只是未来更深入分析能力的基础工作。许多改进都来自用户反馈和客户需求,在此感谢大家的建议与支持。
下载地址
IDA Pro 9.4 for macOS arm64 (Apple 芯片)
IDA Pro 9.4 for macOS x64 (Intel 处理器)
IDA Pro 9.4 for Linux arm64
IDA Pro 9.4 for Linux x64
IDA Pro 9.4 for Windows x64
更多:HTTP 协议与安全

IDA 9.4 带来了全新的 Qualcomm Hexagon DSP 处理器模块、覆盖 C-SKY V1 的 MCore 家族支持,以及对 ARM、TriCore 和 RISC-V 的更深入支持。
浙公网安备 33010602011771号