iOS代码混淆的探索
目的 为了进一步增加应用的安全性,防止我们的应用程序很容易的被攻击者分析、破解、重打包,提高攻击者逆向分析应用的难度 应用的加固方案 数据加密:静态字符串、本地存储和网络传输的加密 静态混淆:类名、方法名、属性的混淆 动态保护:反调试、注入检测、hook检测、越狱检测、签名检测等 代码混淆:将代码分快、扁平化、增加干扰代码,以提高分析者的分析难度 下面结合具体应用场景说明下各个加固方案 数据加密 :在我们的应用中已经有了,对数据进行加密之后,实质上我们已经给攻击者提高了逆向分析的难度了,但是攻击者依然可能通过动态调试或者编写IDA脚本的方式来还原算法。 静态混淆 :程序中的类名和方法名,在逆向分析中只要通过class-dump获取程序中的所有类、定义的方法和属性,就能很快从名字中猜到某个方法的作用是什么,所以,我们就需要做混淆了。 tips: 1. 类名和方法名混淆有很多坑,一个类是通过文件、网络或者字符串动态获取的,如果被混淆了就会出错,相同名称但不同功能的参数进行混淆,也会造成错误,还有其他很多坑需要踩踩才知道了 2. 目前AppStore对应用代码混淆的审核比较严格,一旦做了混淆,有可能会导致延迟审核或者直接驳回,具体可参考 混淆上架风险参考1 和 混淆上架风险参考2 有可能就很不幸就收到这样的审核反馈 3. 那怎么办呢?别慌