iOS加固

360 阅读2分钟

加固:

可以增加安全性,防破解

加固方式:

数据加密(字符串、网络数据、敏感数据)

应用加壳(二进制加密)

代码混淆(类名、方法名、代码逻辑)

等等。。。

适合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中用到名字

二、对字符串进行加密

进行异或运输对字符串进行加密