ObjectiveC 代码混淆

2023年 9月 12日 38.7k 0

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

究其原理,就是用一个随机的字符串在 App 编译前替换我们需要混淆的关键字,让别人反编译之后无法通过代码猜测具体实现。

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

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

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

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

  • 文件名前缀 修改 $FILE_NAME_PREFIX 的内容。比如 "vp",那么在自动生成的文件中,都会有 vp 的前缀,生成的 .h 文件会自动转成大写的 VP 前缀。当然,你可以自定义命名规则,如果你懂 Linux shell 的话。
  • 脚本所在目录 修改 $CONFUSE_ROOT_FILE,所有通过脚本自动生成的文件将会添加到该路径下,方便管理。
  • 更多请参考 Github:github.com/nevermore-i…

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论