# iOS应用砸壳 **Repository Path**: yahibo/ios_application_crash ## Basic Information - **Project Name**: iOS应用砸壳 - **Description**: No description available - **Primary Language**: 其他 - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-05-28 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一、砸壳概述及其原理 APP上架会经历 APP->AppStore->源码 加密过程。 应用加密:开发者向AppStore提交应用,都将由苹果官方进行加密处理,以确保用户使用的APP都是经过审核过的,加密后的APP,开发人员无法通过Hopper等反编译应用,也无法使用class-dump。 iOS应用运行原理:应用在磁盘中是加密状态,由于CPU运行不会识别加密文件,因此在启动应用前需要在内核中对加密应用文件进行解密,提取可执行文件才可放入内存中运行。示意图如下: ![输入图片说明](https://images.gitee.com/uploads/images/2019/0528/173809_120fd2ff_766685.jpeg "1609369-b93718bf0a1e8e7b.png.jpeg") **逆向需要对加密的二进制文件进行解密才可以做静态分析,解密过程即为砸壳。砸壳有两种:** **1、静态砸壳** 在已经掌握和了解加密应用的加密算法和逻辑后在不运行加密应用程序的前提下将壳应用程序进行解密处理,静态砸壳方法难度大,并且加密方发现应用被破解后就可能会改用更高级的复杂加密算法。 **2、动态砸壳** 在运行进程内存中的可执行程序映像入手,将内存中的内容进行转储处理来实现砸壳。该方法相对简单,并且不用关心应用所使用的加密技术。 # 二、手机越狱 使用爱思助手或pp助手均可以对手机越狱,注意越狱时对应的系统版本号,根据自己系统版本号选择。 越狱后手机上会安装Cydia软件,在软件中选择搜索搜索OpenSSH安装,安装完成后便可以与Mac端通过ssh建立连接。 1、通过工具越狱后会出现h3lix应用: ![输入图片说明](https://images.gitee.com/uploads/images/2019/0528/174147_2f1a3cd4_766685.png "越狱.png") 2、点击运行h3lix,再点击按钮运行,将会下载安装Cydia应用: ![输入图片说明](https://images.gitee.com/uploads/images/2019/0528/174300_432766eb_766685.png "installCydia.png") 3、点击Cydia应用查看是否安装OpenSSL,如未安装则搜索安装,如下: ![输入图片说明](https://images.gitee.com/uploads/images/2019/0528/174338_e286b751_766685.png "openssl.png") 通过以上1、2、3步骤之后Mac终端就可以和越狱手机进行ssh连接了。命令如下: ``` ssh root@192.168.1.168 -p 22 ``` 默认密码:alpine 修改密码执行passwd 输入新密码:yahibo 进入手机中操作与Linux命令相同 *注意:手机重启后Cydia应用会失效,需要重新执行第2步重新安装。* # 三、砸壳工具Clutch使用(动态砸壳) *注意:会遇到砸壳失败,要确定是否在App Store下载,如果不是重新下载。* Clutch需要使用iOS8.0以上的越狱手机应用。 下载链接:[https://github.com/KJCracks/Clutch/releases](https://github.com/KJCracks/Clutch/releases) 1、下载后将Clutch-2.0.4放到越狱手机的usr/bin目录下(密码默认为alphine) ``` scp Clutch-2.0.4 root@192.168.1.168:/usr/bin/ ``` 2、ssh连接苹果设备,命令如下: ``` ssh root@192.168.1.168 ``` 3、进入usr/bin目给Clutch-2.0.4赋予可执行权限: ``` chmod +x Clutch-2.0.4 ``` 4、执行Chmod命令查看命令参数: ``` Clutch-2.0.4 ``` ![输入图片说明](https://images.gitee.com/uploads/images/2019/0528/174418_1d5faf29_766685.png "cmd.png") >-b 只转储二进制文件 -d 转储应用的.ipa文件即砸壳,砸壳后获取.ipa文件的路径,将.ipa拉到本地即可 -i 获取安装的应用 5、列举安装的应用: ``` Clutch-2.0.4 -I ``` ![输入图片说明](https://images.gitee.com/uploads/images/2019/0528/174446_5d6615ac_766685.jpeg "app_list.jpeg") 6、开始砸壳,选择编号2对微信进行砸壳: ``` Clutch-2.0.4 -d 2 ``` 运行如下: ![输入图片说明](https://images.gitee.com/uploads/images/2019/0528/174511_61d51757_766685.jpeg "dump.jpeg") 最后生成一个砸壳后的包路径: /private/var/mobile/Documents/Dumped/com.tencent.xin-iOS9.0-(Clutch-2.0.4).ipa 将Dumped文件下载到Mac中: ``` scp -r root@192.168.1.168:/private/var/mobile/Documents/Dumped ipas/ ``` 7、将获取到的.ipa修改为wxtest.zip并解压,进入wxtest文件中的Payload中,执行命令: ``` class-dump -H WeChat.app -o apph ``` 结束后apph中为微信对应的所有头文件信息。如图: ![输入图片说明](https://images.gitee.com/uploads/images/2019/0528/174539_e74acccd_766685.jpeg "look.jpeg") apph中为微信对应的所有头文件信息。如图: ![输入图片说明](https://images.gitee.com/uploads/images/2019/0528/174612_faff0ada_766685.jpeg "headerfile.jpeg")