object-c 代码混淆入门经验

什么是代码混淆?

代码混淆就是保持代码原逻辑不变的情况下搞得别人就算拿到你的代码也看不懂。一来是加大别人反编译你打出来的包后对你的代码的理解程度,或者要把代码发给别人时不想让他们看懂代码。
一般java、Object-c、python编译后还保留命名信息的才需要混淆代码,像C这种编译后完成失去源码命名信息的就没必要混淆了。
至于好多人说混淆没必要,程序员写代码自带混淆之类的话语,那是他们的项目不重要,缺乏安全意识,还没有遇到重要项目被破解欲哭无泪的情况。

怎么混淆oc代码?

网上搜一下讲xcode代码混淆的基本都是与念茜的这篇文章一样的流程:传送门
我照上面的文章搞过,明白他的思路后感觉有点冗余,其实核心步骤就两个,做完就能混淆同工程下的oc代码了:

  1. 创建一个xxx.h文件,拖进xcode工程,在这xxx.h文件里面通过#define的方式定义要替换的变量名。
  2. 找到工程的.pch文件,在文件里面添加#import “xxx.h”,这样在编译开始里就会进行xxx.h文件里面的预编译。(若项目没有.pch文件自行搜索xcode的.pch文件生成教程)
由于通过预编译时#define统一替换变量名,上面这样混淆方案存在的问题:
  1. 名字冲突:可能导致一些同名的底层封装方法找不到了。
  2. InitXXXX方法不能替换。
  3. 有些底层写死心的调用的函数声明不小心被替换就gg了。
  4. 通过字符串动态调用的函数也会gg。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值