IDA 9.4sp1 发布:反编译器新增 Swift 支持与伪代码改进

版本概况

Hex-Rays 于 2026 年 7 月发布 IDA 9.4,随后在 2026 年 9 月发布服务包 IDA 9.4sp1(内部版本号 9.4.260915)。两次发布均以反编译器能力为主线,在高级语言支持、伪代码输出质量与大批量函数反编译性能上带来改进。

反编译新增 Swift 调用约定支持

反编译器与类型系统开始理解 Swift 调用约定,伪代码不再因寄存器搬迁而难以阅读:

  • 新增关键字分别用于声明 self 寄存器、异步上下文与错误路径,反编译结果更接近原始 Swift 写法;
  • 对于剥离符号的二进制,可自动恢复 __swiftcall 调用、抛出调用以及被溢出传递的参数;
  • 服务包修复了在存在 self 实参时重命名函数形参改动错误对象的问题,并修正相关的内部错误。

伪代码可读性与交互改进

  • 可直接在伪代码中编辑类型、为表达式添加强制类型转换、使用页边箭头折叠代码块,并用单条命令反转 if/else 结构;
  • 调用点直接显示形参名称,无需打开函数原型即可判断实参含义;
  • 反编译期间恢复的字符串自动进入字符串列表;
  • 尽可能将内存拷贝调用折叠为简单赋值,用 phi 合并重建 if-then-else 而不是 goto,识别基于 IEEE 754 位运算的浮点绝对值与取负,并在合适上下文使用 true、false 与空指针字面量。

Rust、Go 与 Objective-C 分析增强

Rust 分析可检测 rustc 版本与 crate 列表并显示在文件头,支持带类型的 panic 位置和专用调用约定;Go 分析改进了 PIE 二进制的 pclntab 发现、Go 1.18 及以上版本的构建信息依赖解析、结构体类型质量以及参数与返回类型识别;Objective-C 的引用计数辅助函数可被识别并按需显示或隐藏。

服务包修复与性能

  • 包含大量基本块的函数反编译速度提升;
  • 修复开启自动重命名时更改变量类型引发的崩溃,以及含环状基本块链的混淆函数上的挂起;
  • 修复批量模式下用户微码修改未生效、未重建数据库时反编译字符串不显示等问题;
  • 修正 ARM32(Thumb)使用寄存器加法惯用法的分支、V850 经零寄存器的间接跳转或调用等反编译错误,并修复若干内部错误编号。

对现有用户的影响

本次更新未改变许可与安装方式,持有有效许可的用户可直接升级到 9.4sp1。依赖伪代码阅读与脚本自动化的分析流程将直接受益于输出质量与性能改进;使用 Swift、Rust 或 Go 产物的逆向分析场景提升最为明显。服务包以缺陷修复与稳定性为主,建议在既有 9.4 环境上尽快跟进。

评论