加固:
可以增加安全性,防破解
加固方式:
数据加密(字符串、网络数据、敏感数据)
应用加壳(二进制加密)
代码混淆(类名、方法名、代码逻辑)
等等。。。
适合iOS的加固方案:
代码混淆方案:
1. 源码混淆:类名、方法名、协议名
2. LLVM中间代码IR的混淆(容易产生BUG)
推荐源码混淆方案。
源码混淆怎么做?
一、通过宏定义混淆核心方法名、类名等等,不需要所有的东西都混淆
在pch文件中,定义宏
比如 : #define buyVip dfdds 给bugVip这个方法名定义一个宏,这样代码预处理时,就会将buyVip替换成dfdds,生成的二进制可执行文件,被人反编译后,别人看到是dfdds 而不是buyVip,这样他逆向起来就会增加不少难度
作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这有个iOS交流群:642363427,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, iOS开发者一起交流学习成长!
注意点:
1.不能混淆系统方法
2.不能混淆init开头的自定义初始化方法
3.混淆属性时需要额外注意set方法
4.如果xib sb中用到了混淆的内容,比如关联的类名,需要手动修改
5.可以将要混淆的符号都加上一个特有的前缀,跟系统自带的符号进行区分
6.混淆过多可能会被appstore拒绝上架,需要说明用途
混淆工具:
手动混淆肯定会累死,别急下面上工具:
iOS-class-guard
这个三方工具,是基于class-dump的扩展, 用class-dump扫描出可执行文件中的类名、方法名、属性名等并做替换,同时会更新xib和sb中用到名字
二、对字符串进行加密
进行异或运输对字符串进行加密