iOS 审核 4.3a【完美加固】

iOS审核4.3a加固方法详解

我们应该知道,面对iOS 上架 遇到4.3a的问题或者制作马甲包.最基础的操作就是混淆代码

尤其是我们专业做上架的,需要对各种语言的编译模式,产物,以及ipa构成都需要非常了解, 每种语言开发的App的编译产物不同,针对不同的编译产物做不同的处理方式

有一些经验的开发者, 应该知道 目前的混淆方式大概可以分为是三种


1: 源代码混淆

顾名思义, 就是通过处理源代码,让代码达到翻新的效果, 比如修改一些静态特征,代码结构

难度:  低

优点: 效率高,限制低

缺点:

1: 难以维护最难级别,  源代码改动之后,难以辨别, 对维护多个项目造成非常大的工作量

2: 需要针对各种语言分别开发,比如当前开发iOS的app 的语言有iOS , swift, c++, 需要针对各种不同的语言开发不同的混淆工具, 这个工作量太大, 能够开发iOS的app 的语言高达十几种, 制作十几种语言的混淆工具 根本不现实

2: 编译器混淆

这种混淆方式不需要处理源代码, 直接通过xcode在编译时混淆,也就是在xcode将源代码编译成.o的时机接入混淆,替换符号

难度: 中

优点: 不需要改动源代码, 不涉及到维护难度,不区分语言, 可混淆各种语言的代码

缺点:

1: 处理范围小, 只能对一些符号进行替换, 比如你想改变一些代码结构, 这个基本无法实现.
2: 能力有限,比如一些静态库在xcode编译前就已经被编译好, 所有静态库无法替换符号 ,也就是说他只能处理编译列表的文件

 

3: 替换符号可能会造成闪退,因为有些访问是通过kvc来完成的,如果符号被替换了, kvc还是使用原来的字符串去访问就会造成闪退或者功能异常

3: 直接修改二进制-加固

你是否听到了熟悉的词语-"加固", 我们这行把直接修改二进制的方法喜欢叫成" 加固", 直接修改二进制,达到混淆的效果,也就是说我们直接最终编译的ipa中的可执行文件

举个例子, 比如我们正在考试.

1: 修改源代码的方式相当于,你勤勤恳恳的学习,然后提交试卷后,等待老师审查
2: 编译器的方式相当于, 你在考试的提交试卷的时候替换了别人的考卷,等到老师审查

3: iOS加固的方式相当于, 直接修改考试分数
 

我们简单的了解加固的概念后,进入正题:

难度指数:满级

优点:非常多,不需要关注源代码,不需要打开xcode, 你只需要给我一个ipa, 我返回给你一个ipa

我们先简单了解什么是二级制: 

我们通过拆解ipa, 你往往会看到一个黑色的小盒子, 这就是一个可执行文件 ,我们简称二进制,当然这个文件不能直接打开或者双击执行


这个可执行文件的大小, 往往取决于你的代码量, 代码量越大, 这个文件越大,这个里面是什么东西呢? 


机器码

没错这个二进制里面全是机器码,我们使用xxd命令查看最原始的内容

没错这个就是二进制的最原始的内容,但是这种机器码我们根本无法阅读, 

汇编代码

这些原始的机器码(十六进制字节)正是由汇编代码(Assembly Code)转换(“汇编”)而来的。这个转换过程由汇编器(Assembler) 完成。

我们使用otool -tV 命令进行反汇编查看内容


是不是发现了一些带语义的符号了?  但是仍然难以阅读, 我们来翻编译更高级的语言

 


高级语言

反编译的目标是将机器码/汇编代码转换回更抽象、可读性更高的伪代码, 还需要一个解析的过程,不同语言所在二进制的位置不同,  解析方式也不同,这里不过多介绍, 我们直接来看解析后的结果

这个是不是就是你最熟悉的oc代码了? 

它们的层级关系是:


高级语言 (C/C++/Swift) -> 编译器 -> 汇编代码 (Assembly) -> 汇编器 -> 机器码 (Machine Code)

我们继续关注二进制里面的结构,看看它内部是怎么划分的, 我们使用size-m 查看二进制的概览情况

我们发现内容非常多, 非常乱, 不过像我看多了就习惯了, 大致就是分为几个段, 段里面又被分成了各种小的节
 

三大段

1: __LINKEDIT (符号表主要存放位置)

2: __TEXT (代码主要存放位置)

3: __DATA (静态变量主要存放位置)

我们发现text段中的text节 占据了主要的体积 , 没错, 这就是你的源代码主要存放的位置, 我们加固重点就是处理这个text节 

了解了以上之后你对iOS加固应该有了一个简单的了解, 我们下片文章正式开始进行加固 

下片文章 : 尝试直接修改text段,的 text节


遇到4.3a就找到我

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 条款?** 所有涉及到应用内购的功能都需要严格遵守此规定,尤其是那些包含付费解锁功能、订阅服务、虚拟物品或其他形式的微交易。确保所有与购买相关的流程都公开透明、用户友好且遵循苹果的各项政策至关重要。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值