Objective-C 代码混淆(自动)

为了防止他人通过class-dump反编译我们的APP后,嵌入恶意代码,我们有必要对源码进行混淆。

就其原理,就是用一个随机的字符串在App编译前替换我们需要混淆的关键字,让别人反编译之后也是一脸懵逼,无从下手。

这里简单说一下,混淆的时候要注意那些事项:

  • 不能对Apple系统的API做混淆,不然就会编译不过,甚至导致程序crash;
  • 不能对IBAction类型的方法和IBOutlet类型的属性做混混淆;
  • 如果一个类名和xib或者storyboard有关联,那么这个类也不能被混淆;
  • 如果完全同样的方法名出现在不同的文件中,但有一个或者多个是IBAction类型的,那么也不能做混淆。属性也是同样的道理;
  • 有一些特殊关键字如username,有可能会当做网络请求的请求参数,那么这样的关键字也不能被混淆。

我参考ZMConfuse,自己动手写了一个脚本:vp_confuse.sh,它会自动获取项目中需要混淆的类名、属性、方法(首关键字)、协议名,并排除不希望被混淆的关键字。

当然,需要我们在脚本中做少许的配置。

  1. 文件名前缀 修改$FILE_NAME_PREFIX的内容。比如”vp”,那么在自动生成的文件中,都会有vp的前缀,生成的.h文件会自动转成大写的VP前缀。当然,你可以自定义命名规则,如果你懂Linux shell的话。
  2. 脚本所在目录 修改$CONFUSE_ROOT_FILE,所有通过脚本自动生成的文件将会添加到该路径下,方便管理。

更多请参考Demo:https://github.com/renpan1990/VPCodeObfuscation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值