iOS 审核 上架 被拒 4.3a 【全面解读】
iOS上架4.3, iOS 商家4.3, iOS 上架4.3a ,iOS 上架 4.3, iOS 被拒4.3,iOS被拒4.3a, iOS 悲剧4.3, iOS 悲剧4.3a, iOS审核4.3,iOS审核4.3a,iOS 审核4.3a, iOS 审核 4.3a, iOS 4.3 解决, iOS 4.3 已上架,iOS 4.3 如何处理, iOS 4.3a 如何处理, iOS 4.3a 如何解决,
没错, 这段时间没有写博客, 我进入了一个更深层次的研究 ,苹果总是让人捉摸不透
在长达一个月的时间的研究中,我有了一项重大发现, 请你先点赞或者收藏此文章,随时被库克发现!
你是否发现你的混淆工具时而好用, 时而不好用?
目前有些经验的开发者, 或者公司大部分都会有自己认为比较实用的一款混淆工具, 来处理代码.
使用混淆工具混淆了代码,等一系列处理,提交过审, 非常开心, 你认为你得到了一个宝藏工具, 但是在你的第二次尝试混淆其他项目或者代码时却发现, 被拒4.3a了, 为什么?
我们来解读一个常规的二进制文件
也许对二进制结构不太了解的开发者难以看懂上面的图, 我可以做一个简单的阐述
你编写的代码 oc,swift , 以及一些静态库, 被编译到可执行文件中, 可执行文件是苹果查重的一个重要依据. 我们通常把这个文件成为"二进制",也叫 Mach-O
这个Mach-O 并不是苹果发明的, 并且代码在编译成二进制的过程是不可逆的, 也就是说会优化,或者摒弃一些数据, 最重要的就是, 即便是苹果也无法将编译后的二进制还原成源码,
上面都是一些简单的介绍, 我们进入主题: 我们继续看这张图的概述部分

这个二进制总共有19M的大小, _text段 占据主要体积17M, 其他段占据了较小体积, 那么我们首先关注_TEXT 段
没错, 这个text段中存储了你的大部分的代码实现, 内部经过解析后是这样的
我们发现了一个GC_Chart_Controller, 这个就是源代码当中的类文件

介绍这么多我想表达什么? 重点来了
你混淆的代码最终将会改变_text段, 比如比大面积混淆了源码, text段的静态特征可能会发生较大变化
但是, 他的结构不会变化
来看我们混淆了类名和方法名的二进制结构对比情况
我们发现结构高度相似,这也是你们做了一些简单的混淆, 但是无法过审的根本原因, 你的代码表面做了改变,但是内在没有变化, 就像一个人整了容那种感觉
那么上述说的是其中一种比较简单的情况, 有的开发者会说
我不仅混淆了类名,方法名, 属性名, 还大面积调整了代码结构, 跳转逻辑, 混淆的自己都不认识了 , 但是还是被4.3了? 啥原因
这是不同的二进制结构不同导致的,我们来看一个特殊的二进制

我们发现这个二进制稍有不同, 似乎还有一个段占据了非常大的体积? 那么里面又存储了什么呢 ? 
我们发现这个段中有一个__gopclntab占据了较大体积, 几乎高达8M
那么到这里你是否有所感悟?
当然不同的二进制构造不同需要具体分析

我们看到这个二进制又有些不同的地方, 这个__LINKEDIT段高达5M, 甚至比text段还有大, 那么里面有存储了什么
我们继续来探讨一些关于审核的问题
在众多的客户与我描述他们的问题时, 我往往能从他们的口中得到重要的信息, 如果你也有4.3的问题, 你也可以找到我, 我们来分析和探讨你的情况, 我们来针对每一种语言做一个大致的介绍, 让你们处理4.3的问题中更有方向
下面描述每种语言的编译产物的位置, 希望你收藏好改文章, 以便及时回顾
1: OC 和 Swift
1: 开发者代码全部集成在可执行文件中(xib除外)
2: 基本由可执行文件和动态库组成
3: 改动源代码直接影响可执行文件
4: 一般可执行文件会比较大
5: 混淆程度需要处理的较深
2: flutter
1: flutter 代码编译后为 Flutter.framework 框架代码, 和 App.framework 开发者代码 以及其他三方库组成
2: 可执行文件几乎是空的, 只有几十K, 由静态库占据
3: 改动flutter代码直接影响App.framework 内部结构
4: 如果源代码较少, 非常有可能由于基础框架导致4.3
5: 混淆是否要处理flutter端dart代码?
3: uniapp
1: 代码集成在ipa 中的Pandora 下, 所有代码被 集中编译, 类似整合到一起, 非源代码
2: 资源文件 还是在assets 文件夹下, 所有都是可见的
3: uni_modules 文件夹下是 具有资源文件的插件的 资源文件 , 如果插件没有资源文件这个文件夹将没有,所有uniapp 的开发者的相关的文件 都在Pandora 的www文件夹下
4: 打包后的ipa包 , uniapp基础引擎在 动态库文件夹下 DCUniBase
5:uniapp 提审4.3a概率极高, 可能都是基础库导致的,因为他们几乎完全相同
4: cocos
1: assets/ 目录:这是项目的主要源代码目录,包含了场景、脚本、预制体等。
2: 开发者代码被编译成编译为字节码(.jsc)
3: 可执行文件基本由cocos框架组成, c语言编写的
4:混淆主要侧重方向可执行文件
5: unity
1: unity 空包大概20M ,基础包较大
2: 可执行文件几乎是空的, 只有几十K
3: UnityFramework 包含了基础框架
4: data/raw/aa/ios 路径包含所有开发者创建的资源文件
掌握了各种开发语言的编译产物, 可能对于你在处理4.3a的问题中,找对方向

更多推荐
所有评论(0)