跳过内容

MASTG-TECH-0068: 反汇编原生代码

由于 Objective-C 和 Swift 在本质上是不同的,应用程序编写所用的编程语言会影响对其进行逆向工程的可能性。 例如,Objective-C允许在运行时更改方法调用。这使得挂钩到其他应用程序函数(一种被 Cycript 和其他逆向工程工具大量使用的技术)变得容易。 这种“方法调配”在 Swift 中的实现方式不同,这种差异使得用 Swift 执行该技术比用 Objective-C 更难。

在 iOS 上,所有应用程序代码(包括 Swift 和 Objective-C)都被编译成机器代码(例如 ARM)。 因此,要分析 iOS 应用程序,需要一个反汇编器。

如果要反汇编来自 App Store 的应用程序,请首先删除 Fairplay DRM。 有关更多信息,请参阅 * 获取和提取应用程序* 。

在此上下文中,“应用程序二进制文件”是指应用程序包中包含已编译代码的 Macho-O 文件,不应与应用程序包(IPA 文件)混淆。 有关 IPA 文件组成的更多详细信息,请参阅 * 浏览应用程序包* 。

使用 IDA Pro 进行反汇编

如果您拥有 IDA Pro 的许可证,您也可以使用 IDA Pro 分析应用程序二进制文件。

遗憾的是,IDA 的免费版本不支持 ARM 处理器类型。

要开始使用,只需在 IDA Pro 中打开应用程序二进制文件。

打开文件后,IDA Pro 将执行自动分析,具体时间取决于二进制文件的大小。 自动分析完成后,您可以在IDA 视图(反汇编)窗口中浏览反汇编,并在函数窗口中浏览函数,这两个窗口都显示在下面的屏幕截图中。

常规 IDA Pro 许可证默认不包含反编译器,需要额外的 Hex-Rays 反编译器许可证,这非常昂贵。 相比之下,Ghidra 配备了一个功能非常强大的免费内置反编译器,使其成为用于逆向工程的引人注目的替代方案。

如果您拥有常规 IDA Pro 许可证并且不想购买 Hex-Rays 反编译器,您可以通过安装 IDA Pro 的 GhIDA 插件 来使用 Ghidra 的反编译器。