IDA Pro 是逆向工程软件提供商 Hex-Rays 的旗舰产品。 作为一个交互式和可编程的反汇编器和调试器,IDA Pro 在不同的平台上提供了卓越的质量性能,并且与许多处理器兼容。 IDA Pro 已成为恶意代码分析、漏洞研究和商业现成验证的事实标准。
IDA Pro 提供不同类型的许可证:命名许可证、计算机许可证、浮动许可证和教育许可证,以满足不同的业务规模和使用需求。
反汇编器 调试器 交互式 可编程
主要功能
多处理器反汇编程序
多目标调试器
随着新 IDA 版本的发布,引入了更多功能和升级
IDA 8.0 亮点
像往常一样,IDA 在许多方面都得到了改进,但这次最重要的特性——也是主要版本升级的理由——是引入了全新的 IDA 团队。
IDA 团队出动了!
我们一直在努力为我们的新产品做最后的润色:一套集成的工具,可在 [逆向] 工程师团队之间实现无缝协作。
受到最好的修订控制工具的启发,IDA Teams 将他们的关键概念引入 IDA 数据库和工作流程:
我们对 IDA 团队能够取得的成就感到非常自豪和兴奋,并希望您能够欣赏它的潜力。 但我们不会止步于此:我们已经对下一个版本有了很好的想法!
iOS 16 dyld 共享缓存支持
Apple 再次修改了其移动操作系统上系统文件的内部格式,以提高性能和内存使用率,因此我们更新了 IDA 以支持新的调整。
概述函数
苹果在最近的iOS版本上使用的另一个新技巧是概述函数。 这是一个代码大小优化,编译器将多个函数中使用的公共指令序列提取到一个新的伪函数中,然后从多个地方调用该函数。
这种行为往往会使反编译的伪代码变得难看,尤其是当所列出的函数使用父函数中的任意寄存器或堆栈变量时。 现在你可以用一个特殊的属性来标记这样的函数,反编译后的代码看起来会更漂亮。
例如,下面是一个经过优化编译的文件片段:
在初始伪代码中,我们可以看到对编译器生成的 _OUTLINED_FUNCTION_NN 片段的显式调用,以及一些标记为橙色的变量,因为反编译器认为它们被调用破坏了(调用常规函数就是这种情况)。
在用“outline”属性标记这些伪函数并刷新伪代码后,反编译器将所有内容都内联,并且不再有橙色变量:
Golang 1.18
该语言的新版本对元数据的布局进行了更改。 新的 IDA 版本可以解析它并很好地恢复函数名称。
例如,这是 IDA 7.7 中剥离的 golang 1.18 二进制文件:
IDA 8.0 中的相同二进制文件:
ARC反编译器
ARC 处理器用于许多嵌入式设备,例如 SSD 驱动器或 Wi-Fi 芯片组。 直到几年前,它还是臭名昭著的 Intel ME 中使用的核心。 新的反编译器支持 IDA 当前支持的所有 ARC 指令集变体:经典的 32 位 ISA、32/16 位 ARCompact 和新的 ARCv2。 开箱即用支持延迟槽、条件指令和零开销循环。
不再有 Python 2
Python 2.7 支持结束已经两年多了,是时候放手了。 IDA 8.0 将仅支持 Python 3.x,包括最新的 3.10(Windows 安装程序包括 Python 3.10.5)。
借助函数查找器插件 (patfind),可以更好地进行固件分析
固件二进制文件通常没有任何符号或其他元数据可以帮助 IDA 在未标记的加载数据中查找代码,因此用户必须手动完成。 在新版本中,我们添加了一个使用 Ghidra 中使用的模式格式的插件(带有少量扩展)。 该插件默认启用二进制和类二进制格式,并帮助 IDA 自动发现更多代码。 也可以为普通结构化文件手动调用它以查找其他未引用的代码。
初始自动分析后发现的函数数量与默认设置的比较:
FLAIR 模式生成器 (makepat)
FLAIR 工具包可供所有 IDA Pro 客户使用,允许从静态库创建 FLIRT 签名。
然而,这样的库并不总是可用的——有时你所拥有的只是最终链接的二进制文件。 makepat 插件支持为任意 IDA 数据库中的函数创建 .pat 文件。 它使用为 Lumina 添加的功能来标记模式中的可变字节。 然后可以使用 sigmake 将 .pat 编译为签名文件并应用于其他文件