非越狱砸壳方式总结及坑

本文详细介绍了非越狱环境下对iOS应用进行砸壳的方法,包括手动lldb砸壳、静态砸壳工具Clutch和动态砸壳工具frida-ios-dump的使用。同时,文章指出了砸壳的局限性,如只能在越狱手机上进行,以及可能遇到的安装错误,如DeviceNotSupportedByThining、APIInternalError、EmbeddedProfileInstallFailed和ApplicationVerificationFailed,并给出了相应的解决方案。了解这些知识有助于在iOS应用开发和调试中更有效地处理砸壳问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、引言

大家都知道,在进行非越狱开发的过程中,需要对第三方应用的包进行重签名,并向MachO文件实行相关自定义库的注入操作,而这些都离不开需要对原始的二进制进行砸壳,原因是AppStore上的应用在开发者提交上去的时候都进行了加密。
虽然对于版本要求不高的应用可以通过PP助手直接下载已经砸壳的应用,但是仍有一些需求需要直接拿到当前线上版本的应用来进行处理,这就不得不需要自行掌握砸壳的一些技巧或方式。

二、事项

砸壳方式

目前提供了两种方式,一种手动lldb进行砸壳;一种是运用工具砸壳,工具砸壳又分为两种:静态砸壳(Clutch)及动态砸壳dumpdecryptfrida-ios-dump)。
其中静态砸壳局限较高,是硬性解密的过程,而动态砸壳是通过读取加载到内存中的信息进行Mach-O文件的解密替换。

局限性

目前砸壳只能通过越狱手机来做,并且最终的Mach-O可执行文件只会对当前砸壳用的越狱手机架构解密,可通过otool -l xxx | grep -B 2 crypt来查看解密状态。

运用frida-ios-dump工具这种动态砸壳的方式进行砸壳,首先脚本进行了优化,可以预先加载包内所有的framework到内存,但是尚不能加载appex等信息,是因为不能自动启动appex等进程。

具体解决办法是: 可以通过手动启动这些Appex进程,并用dumpdecrypt工具逐个对应用宝中Plugin目录对应的几个appex二进制进行内存dump,然后依次对原包中的appex二进制文件进行替换。当然也可以采用硬性解码的方式Clutch来进行砸壳。

三、坑

砸壳之后的应用可能存在装不上手机的问题,具体看安装过程中出现的问题;具体可采用ideviceinstaller工具进行具体安装问题的排查。
通过源码分析可知,它依赖了libimobiledevice库,-install指令下实际调用的是installation_proxy.c文件下的instproxy_error_t instproxy_install(instproxy_client_t client, const char *pkg_path, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data)函数,而在这个文件中还定义了许多安装错误类型,具体可以通过链接查看。

常见错误
1.The application is not build for this device. (ideviceinstaller报错:DeviceNotSupportedByThining)

由于砸壳后ipa做了瘦身,一些UI支持的设备在info.plist里显示不全,只需要修改info.plist的UISupportedDevices项以及Required device capabilities段以适配即将安装的设备类型。

2. APIInternalError

一般属于设备系统出现问题,请重启设备再安装。

3. EmbeddedProfileInstallFailed

一般是Provision profile文件过期或无效导致

4.ApplicationVerificationFailed

应用包的重签名未成功导致

这样便可以在自己重签名的过程中厘清系统安装包的检测步骤,在找问题原因的时候方便很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值