iOS代码加密方案
Posted FairGuard游戏加固
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS代码加密方案相关的知识,希望对你有一定的参考价值。
一、前言
ios系统从iOS 1 (2007) 到目前iOS 13 (2020),已经经历了13代,和安卓的开源生态相比iOS一直是都是闭源生态,这确实相对安全些,但是这也容易被人们忽略了其自身App的安全性,导致大部分公司开发App时不会投入成本在自身App的安全方面,一旦系统越狱后被逆向研究App,结果往往是比安卓更恐怖的,所以说在系统闭源前提下,我们也需要对App自身的安全进行加固防护,不能太依赖系统的环境。特此FairGuard提供一套完整的iOS代码加密方案,一键傻瓜式操作。
二、 iOS App保护
iOS App客户端的加密防护工作可以分为如下几个角度:
1、代码本身防护
1.1 代码逻辑的混淆
1.2 字符串的加密
1.3 Objective-C类名和方法名的混淆
2、代码行为防护
2.1 本地存储时的保护(NSUserDefaults,sqlite存储文件数据加密)
2.2 网络传输数据保护
3、代码对抗防护
3.1 反调试保护
3.2 反越狱保护
3.3 重签名保护
3.4 反修改器保护
三、 代码本身防护
下面我们可看看使用FairGuard iOS加固方案混淆后的效果图:
我们FairGuard目前支持代码逻辑混淆、字符串混淆,也是基于LLVM的IR层的混淆Pass,但是不是使用开源的OLLVM项目,而是通过HOOK了Xcode里面Apple的clang,在其执行优化的过程拦截执行我们优化Pass,最小程度的减少用户接入成本和体验效果。对用户来说完全无感知。
四、代码行为防护
4.2 网络传输数据保护
AES(机密性): 传输前对Body数据做一个加密保证数据的机密性。
五、代码对抗防护
当你的代码本身和行为都做了很好的防护后,可能逆向者会进行动态调试,这时候我们就是代码运行时的对抗防护了。
5.1反调试保护
可以使用网上公开的ptrace、syscall、sysctl、异常等方式,之后再对这段防护代码加上之前的保护后效果会更佳。
5.2反越狱保护
可以从多个维度检测、例如检查某些App的安装、文件的存在、目录的访问权限来综合判断Cydia Check、Inaccessible Files Check、Plist Check、Symbolic Link Check
5.3反重签名保护
原理可以用加固时存储当时的BundleId和当时二进制的签名,运行时也获取一遍并且与加固时的进行对比来防护。
5.4反修改器保护
在代码对抗防护,FairGuard不但提供本地检测代码,并且保护了检测代码,还提供了在线特征更新检测,定期更新,在最短的时间保护了App的安全性。如下:
六、FairGuard一键加固演示
七、写在最后
以上是关于iOS代码加密方案的主要内容,如果未能解决你的问题,请参考以下文章