一篇文章告诉你苹果审核到底审些什么,纯干货!!!(截止23年8月)
汇总
-
ipa
-
代码
- 类、属性、函数、协议等等
- 字符串常量
- 函数汇编
- 代码量/关键字
- 私有api
-
资源文件
- 文件唯一值(md5、hash)
- 图像识别
- 文件内明文的域名/IP
- 连续32位16进制字符串
- 二进制文件内的编译路径
- 文件名
-
网络请求
- 域名
- 请求url
- 请求数据/返回数据(不确定,提的包都会处理没去验证)
-
代码
-
账号
- 绑定的手机号码
- 测试设备
- 收款银行账号
-
元数据
- 五图
- icon
- 名字
- 描述、关键词、网址等苹果后台信息(不确定,一般都随便写,网址内容需要与包体对应)
-
提审环境
- 提审网络
- 提审设备
- 打包设备(不确定,游戏研发一台电脑打n个包也可以过)
审核机制
苹果审核有机审以及人审2个阶段,机审主要审代码、资源文件、网络等方面,人审主要审App内容等方面,因此在不同的审核阶段被拒需要做不同的处理。
也有很多人认为苹果审核是基于一个评分的机制,比如4.3是因为包体多个方面跟其他包关联上了,这点我也认同。
处理
代码
代码推荐用 ReviewTools 这个工具混淆处理,工具拉取了大量的Github代码做混淆用,混出来的代码跟手写没有区别。
资源文件
苹果对资源文件的标记无非就是从资源文件内提取特征然后匹配,直接加密并且修改文件名就可以了。
可以自行实现或者直接用 ReviewTools 处理。
代码量/关键字
统计过AppStore线上的包,每个类所包含的属性函数数量都是在一个区间的,也验证过对一个项目多次混淆会导致2.3.1,因此并不建议插入过多的垃圾代码。
某些关键字也会导致2.3.1(obfuscated code),甚至有些邮件还会告诉你哪个函数有问题,但是你改了重新提还是大概率2.3.1,因为这种绝对不是因为一个函数名导致的。这种情况建议直接重新混淆。
二进制内包含的编译路径
一般是因为用了 __FILE__ 这个关键字来打印文件路径,删掉即可。
网络请求
更换域名或者审核期间不请求网络。
测试设备
一般来说不添加设备就好了,如果有内购的包并且需要测试,可以用一个专门测试的账号证书对ipa进行不完全重签名来测。
五图&icon&名字
有时候更换五图icon名字也能解决4.1、4.3和2.3.1。需要注意五图icon里面用到的元素是否已经提审过,苹果的图像识别能力真的很牛,可以尝试用Midjourney生成。
提审网络&提审设备
虚拟机+流量卡
最后
以上仅代表我个人的提审经验,部分是通过一些渠道得到的内部消息,如果你有不一样的看法或经验欢迎分享。
关注我分享更多苹果审核案例。