背景:
ios 应用包 ipa 文件如果被攻击者通过越狱手段反向编译或者砸壳之后,再通过反向编译是可以看到部分源代码的,操作更高的可以直接生成马甲包,所以这样是有泄漏代码和泄漏内部流程风险的。为了预防这一情况发生,所以开发者需要对应用程序包在启动时进行越狱检测。
越狱利弊:
利:通过越狱手机可以直接看到各种系统文件路径,可以修改系统内的设置,也可以免费下载安装苹果内付费下载的应用,安装类似安卓手机开源的文件目录一样。通过运行时增加 hook 方法可以修改当前运行中的 app 部分效果。越狱也是对 ipa 包砸壳的必经之路。 弊:越狱后的手机系统会不稳定,病毒容易入侵手机。
越狱原理:
目前市场上有很多种越狱方法,但殊途同归,原理都是一致的。
- 1.获取手机内的所有应用权限;
- 2.hook 手机内部的 NSFileManager;
- 3.修改应用运行的环境变量;
越狱检测原理:
针对越狱原理,那么就可以一对一针对越狱造成的文件进行检测,如果一旦发现满足其中一种越狱条件,立即退出 app。这样就算是越狱手机,也是无法启动当前 app 的,但不能保证其他 ipa 是否安全。 针对以上原理,所以一对一对当前手机进行条件判断:
- 1.判断“/User/Applications/”是否拥有所有应用权限;
- 2.判断 NSFileManager 是否被 hook;
- 3.判断当前运行的环境变量;
- 4.针对越狱过的手机里面会自动安装一个 cydia;判断是否存在并判断能否打开 cydia 应用;
- 5.判断如下越狱生成的文件是否存在: @”/Applications/Cydia.app”, @”/Library/MobileSubstrate/MobileSubstrate.dylib”, @”/bin/bash”, @”/usr/sbin/sshd”, @”/etc/apt”, @”/private/var/lib/apt/”
越狱测试:
用不常用的手机(最新系统无法越狱,因为安全系统比较高,而且漏洞比较少),可以进行先越狱,越狱成功后,打开 ipa 后,会直接退出。