iOS 审核 4.3 被拒【深度进阶】

 混淆了工程自信满满的去提审?   

这可能是你混淆后的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打回 , 苹果可能采取了一些措施来对抗代码混淆,可能包括静态分析、动态检测,更精细的代码特征提取、行为分析、运行时检测等。

为此我研发了一款much-o 相似度对比脚本, 深度检测可执行文件, 这将是一个量化工具, 不再让你漫无目的的去提审


 

我们下篇文章介绍什么叫  "控制流 " , "数据流", "代码签名" 等高进阶内容,  或者可以私信我提前了解哦

iOS 审核规则4.3.a 是针对应用内购(In-App Purchase)的一个特定条款。这个条款的主要目的是为了防止开发者滥用应用内购系统来进行欺诈性的交易或是绕过苹果公司的官方支付渠道。以下是对该条款内容及含义的详细介绍: ### 4.3.a 条款概述 iOS审核规则4.3.a 要求所有应用内购的商品和服务的价格、描述以及购买流程都必须清晰透明,并且不得诱导用户做出非自愿的购买决策。 #### 具体要求包括: 1. **价格明确**:商品或服务的价格必须在展示给用户之前就清晰地显示出来,不允许通过促销、折扣等方式让用户在购买过程中才了解实际费用。 2. **描述详尽**:商品或服务的详细说明应该提供足够的信息,使得用户能够理解他们正在购买的内容,避免模糊不清或误导性的描述。 3. **避免自动续订**:除非用户明确选择并确认了续订选项,否则应用内购服务不应默认设置为自动续订。如果涉及订阅服务,应当在首次订阅时告知用户自动续订政策和如何取消订阅。 4. **取消机制**:应用必须提供简单直接的方式来停止自动续订的服务,并且这种操作过程应该是免费的,不会对用户造成额外的经济负担。 5. **购买历史记录**:应用应允许用户查看其过去的所有购买记录,并能够方便地管理或撤销那些认为不必要的购买。 6. **无隐藏费用**:整个购买过程应不含任何未提前告知的额外费用,如税费、平台费等。 ### 违反后果 违反4.3.a 规则可能导致应用被绝发布或下架。苹果会对提交的应用进行定期检查,以确保它们遵守所有的应用商店指南,包括4.3.a 关于应用内购的规定。 ### 相关问题: 1. **如何确保我的应用内购遵循4.3.a 条款?** 确保所有应用内购商品的定价和描述都是清楚准确的,同时提供易于理解和取消的订阅选项,是关键步骤。在设计购买流程时,始终将用户体验放在首位,确保流程直观明了。 2. **如果我的应用因为违反4.3.a 条款而受到处罚怎么办?** 首先,需要立即审查并修正违规的部分。随后,按照苹果公司提供的指南进行修复,然后提交更新后的应用供审核。及时响应和改正可以减少处理时间并尽快恢复应用的可用性。 3. **在哪些场景下需要特别注意遵守4.3.a 条款?** 所有涉及到应用内购的功能都需要严格遵守此规定,尤其是那些包含付费解锁功能、订阅服务、虚拟物品或其他形式的微交易。确保所有与购买相关的流程都公开透明、用户友好且遵循苹果的各项政策至关重要。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值