写点什么

iOS 代码混淆 ---- 自动

作者:雪奈椰子
  • 2023-11-07
    广东
  • 本文字数:835 字

    阅读完需:约 3 分钟


先大致解释一下“编译"、"反编译":

编译:就是把千千万万行字符串(也叫代码,或者源文件),变成 010101010101(机器码,也叫目标代码)

编译过程:预处理-编译-汇编-链接

我的脚本运行在预处理阶段。

反编译:就是把 0101010111110001100(机器码,也叫目标代码),变成千千万万行字符串(也叫代码,或者源文件)

     最近三年一直待在银行做 App,由于银行对安全要求较高,所以 iOS 的代码必须要有混淆的措施,初期实施了念茜姐的混淆方案,但是领导说,我们要自动混淆,方法名字不能一个一个的添加到 func.list 中,所以方法名只能从.m 和.h 文件中抽取了,但是如何屏蔽系统的方法名,暂行的策略是:将自己定义的方法名全部添加一个前缀。

    例如 “hsk_funtion1”; “hsk_funtion2”;“hsk_funtion3”;



在 Xcode-->Target--->Build Phases--->添加 Run Script



添加 Run Script

通过 class-dump 反编译之后:Appdelegate 效果



通过 class-dump 反编译之后:ViewController 效果



codeObfuscation.h 宏定义文件、confuse.sh 脚本文件、func.list 函数列表文件的关系。

程序每次预处理,都就会执行 confuse.sh,从.m 和.h 文件中按照"一定的规则"抽取需要混淆的函数名,全部写到 func.list 中,然后再从 func.list 中逐行提取函数名进行宏定义,宏定义使用随机字符串,然后写到 codeObfuscation.h 文件中。

func.list 函数列表抽取,和宏定义是脚本自动完成,不需要手动抽函数和手动宏定义呢。


由上可知,这种方法非常的复杂麻烦,我们这边推荐一个全新的混淆思路和工具-ipa guard,有兴趣的小伙伴们可以尝试这款新工具,目前还是免费阶段。

Ipa Guard 是一款功能强大的 ipa 混淆工具,不需要 ios app 源码,直接对 ipa 文件进行混淆加密。可对 IOS ipa 文件的代码,代码库,资源文件等进行混淆保护。 可以根据设置对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加 ipa 破解反编译难度。可以对图片,资源,配置等进行修改名称,修改 md5。只要是 ipa 都可以,不限制 OC,Swift,Flutter,React Native,H5 类 app。




用户头像

雪奈椰子

关注

还未添加个人签名 2022-07-22 加入

还未添加个人简介

评论

发布
暂无评论
iOS代码混淆----自动_雪奈椰子_InfoQ写作社区