在iOS逆向工程领域,砸壳是一项至关重要的技术。它指的是将一个iOS应用程序的加密层剥离,从而还原成未加密的版本,以便进行更深入的分析与研究。通过这个技术手段,逆向工程师可以获取到应用程序的原始二进制文件,进而更容易地对其进行代码分析和修改。然而,这项技术不仅需要扎实的理论知识,还涉及一系列复杂的工具和步骤。本文将从概念、工具、理论和实战几个方面,详细介绍iOS砸壳的过程及其背后的逻辑。
一、什么是砸壳?
定义
砸壳是一个技术术语,用于描述逆向工程师去除应用程序加密保护的过程。砸壳是iOS逆向工程中的一个基本步骤,其主要任务是将经过加密和保护的应用程序还原为可读的二进制文件。这个过程类似于破解软件的保护机制,使得逆向工程师能够对应用内部的代码和逻辑进行深入分析。在iOS应用的开发过程中,开发者通常会使用各种加密手段来防止应用被轻易篡改或破解。而砸壳技术则是为了绕过这些防护措施,使逆向工程变得更加可行。
二、常用的砸壳工具
实现iOS砸壳通常需要借助一些特定的工具。
以下是几种常见的砸壳工具:
Frida:是一个开源的动态二进制插桩工具包,支持多个操作系统和架构,包括iOS和Android。它主要用于调试、反汇编、修改和监视程序的行为,提供了一个简单易用的JavaScript API,能够轻松地对目标应用进行操控和探测。
Clutch:这是一款广泛使用的iOS砸壳工具,能够自动解密应用,支持多种CPU架构,方便在不同设备上使用。Clutch的强大之处在于其用户友好的界面和高效的解密速度。
DumpDecrypter:是一款简单易用的工具,由Netskao开发。这款工具无需越狱即可使用,但需要通过TrollStore来安装。它支持从iOS 15.0开始的多个版本,可以将已安装的应用导出为IPA格式的文件,便于进一步的分析。这是一个强大的动态调试工具,不仅可以用于砸壳,还能实时监控和修改应用的行为。的灵活性使其成为逆向工程师的重要利器。
GDB:作为传统的调试器,GDB同样可以应用于iOS砸壳过程。尽管其操作相对复杂,但它提供的调试功能非常强大。
class-dump:主要用于提取Objective-C类的头文件,这对于理解应用的内部结构非常有用。
IDA Pro:IDA Pro是一款强大的反汇编器,可以帮助理解二进制代码的结构。
Hopper:Hopper是一个反汇编工具,专门用于iOS和macOS应用。
LLDB:LLDB是Apple提供的调试器,用于调试程序并获取运行时信息。
三、砸壳背后的技术原理
要理解如何实现砸壳,我们需要掌握一些基本的iOS安全机制和技术原理。iOS系统采用了多种安全策略来保护应用程序,包括但不限于代码签名、数据加密和应用沙箱等。
代码签名:每个iOS应用在发布前都需要进行代码签名,确保应用的完整性和合法性。砸壳过程中需要绕过这一机制。
数据加密:为了防止数据被盗取,许多应用会对其内部数据进行加密。逆向工程师需要找到并利用解密算法才能获取有效数据。
应用沙箱:iOS应用运行在独立的沙箱环境中,不同应用之间不能直接访问彼此的数据。砸壳工具需要突破这一限制,以便于分析和提取数据。
四、砸壳流程
1. 设备越狱
在进行砸壳之前,首先需要确保你的设备已经越狱。这是因为苹果官方并未提供直接的方法来移除其应用加密保护,因此必须通过越狱获得更高权限。
2. 安装所需的工具
安装 Frida
完成越狱后,手机上会出现sileo 这个软件,如果你打开这个软件无法链接网络,你需要用梯子后再打开确认可以链接网络后,你就可以在手机中安装常用的工具,在Sileo 软件中添加 Frida源,如下图所示:
添加源后,点击安装,等待完成后即完成了Frida的安装。
安装openSSH
越狱设备安装 openSSH的方法 可自行百度
3. 获取可执行文件的位置
获取要砸壳APP的可执行文件的具体位置和沙盒的具体位置,我们先把越狱设备上的所有程序都关掉,唯独留下你要砸壳的这个APP。
4. 安装MAC必要的工具
安装 Python (3.7以上的版本 )
* 安装Python 3.7以上的版本是因为已经集成了pip3 ,不需要需要手动安装pip3。
python安装完成后输入如下命令,检测 pip3 是否已经安装成功
pip3 --version
如果提示没有安装,则需要重新安装 输入如下命令:
sudo easy_install pip
安装 Frida (版本要和手机端一致,否则可能会出现不可预知的错误)
sudo pip3 install frida
如果安装过程出现以下错误:
Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version.
This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
需要执行下面这条命令
sudo pip3 install frida –upgrade –ignore-installed six
验证是否安装成功
frida --version
执行上面命令后 如果出现版本号,说明已经成功安装。
安装 usbmuxd
MAC系统默认已经集成了usbmuxd,若没有安装,前往百度搜索安装过程
启动 usbmuxd
brew services start usbmuxd
5、SSH链接
端口映射
打开Mac的bash 输入如下命令 ,把 22端口映射到 1234上。映射端口号可以自定义
iproxy 1234 22
连接ssh
确保iPhone跟Mac在同一个网段后,打开终端新窗口输入
ssh -p 1234 [email protected]
openSSH的root密码默认为:alpine
6、安装 frida-ios-dump
下载 frida-ios-dump压缩包 解压后 ,cd到frida-ios-dump目录 输入
sudo pip3 install -r requirements.txt --upgrade
在执行
python3 dump.py -l
看见如下信息说明成功,已经可以浏览文件系统的APP列表了。
apple@appledeiMac-2 frida-ios-dump-master % python3 dump.py -l
PID Name Identifier
---- ------------ ---------------------------
5364 App Store com.apple.AppStore
5802 Sileo org.coolstar.SileoStore
4206 邮件 com.apple.mobilemail
5888 被砸壳 com.xxx.123456
7、砸壳
在当前目录下输入
python2 dump.py bundle 5888
// 5888 就是上面列表中 被砸壳的 id
如果 砸壳顺利完成后,会输出相关信息,也包括砸壳后的文件路径信息。
为了验证砸壳是否成功,把刚才砸壳成功的.ipa文件包导出到本地电脑,然后导出要砸壳的应用程序的头文件。这需要下载一个名为class-dump的工具,然后按照指示操作即可导出头文件。
总结
对于希望保护自己应用程序不被轻易砸壳的开发者来说,使用诸如ipaguard混淆加固的方法是一个很好的选择。这种方法通过对应用代码进行混淆和加密,提高了应用的安全性。其中包括字符串混淆、类名和方法名混淆、程序结构混淆加密以及反调试、反注入等策略。
通过以上步骤和工具的使用,我们可以有效地进行iOS应用的砸壳操作,进而进行深入的逆向分析和修改。然而,值得注意的是,逆向工程应该合法合规地进行,尊重软件著作权和应用的使用条款。
*声明:本文内容仅作为学习研究目的。