马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
肴杂了工程自大满满的去提审?
这大概是你肴杂后的app对比:
本篇文章信息量较大, 盼望先收藏回家徐徐看 , 我们将我们的ipa 大抵分为两个模块,可实行文件和动态库
1: 可实行文件
可实行文件的查重目前是苹果机审的最紧张依据, 普遍机审在非常钟左右, 机审也大概高出非常钟, 这是由于可实行文件的大小决定的, 因为越大的可实行文件斲丧的查重时间就会越长
我们先来分析一下机审:
1: 不少开辟者从前大概前几年大概都会碰到机审1分钟被打回4.3, 随着开辟者对苹果机审的深入相识,和对代码肴杂的处置处罚能力和深度提拔, 这种情况如今比力有数,也不扫除苹果对机审做了调解
不要简单的小瞧这一分钟, 这一分钟将是分析苹果机审的一个紧张依据, 苹果的机审体系是很大概是 多阶段漏斗型架构
第一阶段:静态特征快速匹配
1: 第一个阶段很大概是对ipa 特征指纹快速匹配 ,哈希值对比是最精准的而且速率极快, 假如在这个阶段中,你掷中了极多哈希值重复,那么你将不进入机审的第二阶段, 直接精准被打回
这里有一个问题, 若苹果有 2000万 汗青应用,单节点每秒 10万次 比对,全量对比需 2000万 / 10万/秒 = 200秒 ≈ 3.3分钟,远超1分钟考核时间窗口。
苹果的算法能力大概是顶尖的,大概使用多种对比技能联合
不扫除大概通过 分层过滤(Layered Filtering) + 分布式盘算(Distributed Computing) 将盘算量压缩 1000倍以上。
等技能实现 分钟级精准对比
第二阶段:动态行为
机审的第二个阶段大概来到代码级别的深度对比
1: 苹果大概提取符号表的信息,符号关联性分析,代码结构相似度深入分析
类名、方法名、属性名的查庞大概在第一阶段通过静态哈希匹配快速完成,但更复杂的查庞大概在第二阶段举行动态或更深入的分析。
假如机审的几个阶段你都通过了, 那么才气进入到人工考核, 对于人工考核, 我们本篇文章不做具体的分析 , 我们回到正题:
可实行文件解析 :
可实行文件携带信息较多 , 我只简单的概述一下,
1. 文件头信息(Mach-O Header)
2. 代码段(__TEXT)
3. 数据段(__DATA)
4. 符号表(Symbol Table)
5. 动态库依赖(Load Commands)
6. 代码署名(Code Signature)
7. Objective-C元数据
8. 资源引用特征
苹果从可实行文件中大抵会提取以上信息来分析和对比你的可实行文件 , 问题来了, 我们好像都知道肴杂代码, 起首肴杂类名方法属性名,硬编码, 那么你改了这几样, 到底影响了可实行文件里的哪些信息? (以下是代码展示, 看不懂直接划到结论部分)
符号表对比结果
符号范例原始符号肴杂后符号类名(Class Name)OriginalClassZh_Class_01方法名(Method Name)originalMethodzh_method_01类结构引用_OBJC_CLASS_$_OriginalClass_OBJC_CLASS_$_Zh_Class_01方法实现地址-[OriginalClass originalMethod]-[Zh_Class_01 zh_method_01]
Objective-C 元数据对比结果
元数据段原始内容肴杂后内容技能影响__objc_classnameOriginalClassZh_Class_01类名字符串被更换__objc_methnameoriginalMethodzh_method_01方法名字符串被更换__objc_classlist指针指向 OriginalClass指针指向 Zh_Class_01类结构体中名称引用被修改__objc_selrefs引用 originalMethod引用 zh_method_01方法选择器绑定到新名称
总结: 肴杂方法名和类名会直接影响 Mach-O 文件的 Objective-C 元数据段 和 符号表
本篇重点来了!!!!
你是否发现,
比年来开辟者肴杂代码的能力不停提拔,而苹果好像也在应对这些肴杂方法,你肴杂的工程是不是依然还是被4.3打回 , 苹果大概采取了一些步调来对抗代码肴杂,大概包罗静态分析、动态检测,更精致的代码特征提取、行为分析、运行时检测等。
我们下篇文章先容什么叫 "控制流 " , "数据流", "代码署名" 等高进阶内容, 大概可以私信我提前相识哦,博主24小时随时在线,假如你想找到我, 动动你的小脑瓜
iOS 考核 4.3 (b) 【考核机制与未上架代码的数据库战略】_ios 考核 csdn-CSDN博客
|