【OC&Swift】代码混淆工具开发过程分享
前言
由于 App Store 上架难度的不断攀升,开发者无不被各种被拒、被调查、被封号所烦恼,所以会通过各种办法提升过审几率,由于上传到 AppStore 上的应用相关信息都会被记录在苹果审核服务器上,只要产生版本构建都会被记录包括被拒审的应用,所以需要对原来项目进行处理换号上架,进入正题:
文章创建时间:2019年08月29日
文章最后更新日志:
时间 | 内容 | 计划 |
---|---|---|
2019年08月29日 | 创建文章 | 完成工程创建、实现修改工程名 |
持续更新中。。。(此句还在,请您放心,证明我还活着~)
声明
1. 本文只做理论分析,不确保文章内容都为可行,具体以实际操作为准;
2. 开发混淆工具类思路分析及开发过程和知识点分享;
3. 说不定的并承诺,最开始关注并对此项目有帮助的朋友给予使用一定时间的权限,并记录在此文章中
4. 此工具完成时间待确定,加班加点的整~
罗列出提升过包率的一些操作:
1. 白包过审后,版本更新时添加变成功能包,5图和关键词一起加上, 这里白包为应用或者小游戏,一般分为棋牌类、游戏类的副包
2. H5小游戏包->做开关功能包
3. 支付类可使用H5支付,支付也有几种方案实现支付宝和微信避开内购,fromscheme字段后面细说,这不是本文重点
4. 先写几个后面再加。。。
补充技能点:
1. 隐私政策、用服务协议、技术支持、这几个可以放在简书上或者是网易的 lofter上
2. 数据:青花瓷、Python
3. Logo:Mac自带的 keynote、这个在线设计logo这里、这个厉害在线设计这里
4. 设计:推荐六款个人常用的App设计辅助工具
5. 配色:12个超好用的配色网站
6: 图标:iconfont、其他图片资源就是个大资源网站上搜吧
注意事项:
1. 不要用公司账号去上公司的包,先搞一个个人账号上,过审后移交给公司账号,避免公司账号直接被调查,一脸懵逼;
2. 如果被拒多次,要换电脑和ip,保证ip+电脑+账号都是关联再一个环境上面,可以避免其他已经过审的包收到牵连;
3. 先写几个后面再加。。。
我是分割线
扯多了~开始说一下我最近研究的混淆 要同时支持 OC+Swift 两种语言:
先说说为什么要搞代码混淆:一个是为了项目的安全,别人反编译你的包后分析难度加大,再者混淆后的代码为全新的代码,然后可以去提交给苹果审核,苹果越严,马甲包的需求越大,成正比。
混淆工具思路分析:
现有工具:
四款iOS加固工具评测
正则:
这也是现在大多数混淆工具的方法,正则+Python;
此方案待确定,因为需要写一大堆正则类匹配语法中各种各样的样式,稍微有点繁琐
OC+正则:
KLGenerateSpamCode
iOS 使用正则从文件内容检索出OC方法
shell脚本
可参考 aron1992 的教程:
aron1992链接
语法树:
clang-只支持iOS,不支持swift,所以还需要搞一个swift单独来处理siwft语法树(swift的语法树分析有 swfit-ast,活着参考swiftlint);
swift:
swift-ast
clang的文章:
也可以先考虑使用 Clang 做一个OC版本的工具,后期再想办法做swift的兼容
深入剖析 iOS 编译 Clang / LLVM
iOS编译器LLVM + Clang架构分析以及三种混淆方案实践分析
Objective-C混淆之方法名混淆
使用Xcode开发iOS语法检查的Clang插件
LLVM代码研读(2) --- LLVM前端: Clang剖析
代码混淆之 libclang.dylib 应用
iOS代码混淆
swift+oc:
Drafter: 一个在iOS项目中分析代码结构的工具
以上就是参考资料,开始着手造轮子:
工程为 Mac 应用
- UI界面
- 需要一个漂亮有内涵的icon
- 要起一个响亮的名字
以上征集建议!
项目功能罗列:
代码混淆
-
更改工程名
- 随机
- 自定义
-
方法混淆
- 随机混淆
- 添加前缀
- 修改前缀
-
类名混淆
- 随机混淆
- 添加前缀
- 修改前缀
-
属性混淆
- 随机混淆
- 添加前缀
- 修改前缀
-
字符串可逆加密
文件混淆
-
修改对应的.h、.m、.mm、.swift、.pch文件
- 随机
- 添加前缀
- 修改前缀
-
修改文件夹名称
- 随机
- 添加前缀
- 修改前缀
垃圾代码
- 自动生成垃圾代码
- 垃圾代码自动调用
注释
- 删除注释
- 修改注释
- 添加注释
资源混淆
- 修改图片名称或前缀
- 修改图片 Hash 值
- bundle中 和 Assets.xcassets 中图片
词库
- 内置对应词库
- 手动添加对应词库
忽略
- 文件夹忽略
- 词汇忽略
其他
- 自动打包ipa、签名、重签名
- 一件生成各种尺寸Icon
- 一件还原
以上就是混淆工具的大致雏形,我会一步一步的完成所有功能的开发,并分享开发过程中遇到的问题,开发进度会实时更新文章开头处;
欢迎留下各位的想法和建议;
或者有什么好的文章也可以推荐给我,我会添加到此文当中,并加上您的贡献。