iOS 马甲包上包总结–代码&界面篇
在上马甲包的过程中最重要的一环就是要让苹果全方位的感觉到这是一款新app,跟其他应用没有关联,需要我们修改项目工程,代码,资源,界面,交互等
一、工程相关信息修改
- bundle id, display name,version,build
- 项目工程名
- 修改工程名后需要修改项目的文件夹名,info.plist的路径,以及其他需要手动修改的内容
- 类名混淆有两种方式,加前缀后缀和替换类名
二、方法名混淆
方法名混淆比较麻烦,几千上或上万个方法名,命名规则不可能绝对标准。这里我们采用的方式有点绕,
- 先按OC/Swift方法的定义规则提取非系统的所有方法名,制成键值对混淆方法表
- 然后使用脚本对.h、.m、.swft进行字符串替换。注意提取的方法名为单个单词,常用字符串的需要剔除,否则会把非字符串替换掉。
- 移除单个单词、或与常规字符串相同的方法名,避免替换。不能对系统方法名进行混淆,机审会被拒;
- 项目中使用的代理方法混淆要覆盖到位,否则会导致无法调用到代理方法而崩溃;
- 简单的头文件定义宏的混淆方式,会容易被检测到
三、混淆文件和代码注入
引入一些跟自身app无关的功能并放置入口,能够正常使用,例如文件浏览器,视频播放器等,冲抵app本身代码的占有率;
使用脚本生成无用的实现文件,嵌入到各个目录中,生成的类及方法,一定要被调用,否则会被机审判定为混淆。
引入的类名和方法调用需要在主线程上,避免UI操作在其它线程上导致崩溃卡顿,同时,主线程上大量的方法调用,可以能对本身业务层造成影响。这里需要手动排查删除这些引入的代码。
四、违规功能屏蔽
五、界面&交互修改
界面修改需要注意几项必须修改的内容:
交互修改主要是调整交互控件的位置,以及转场动画,功能位置等,跟原有app差距越大越好,必要时可对不必要的功能进行一些删减或挪动位置
IOS马甲包上包总结–资源篇
1、修改资源文件名,名字尽量跟原有的不相关,然后整体替换工程中的文件名
2、配置文件
配置未见跟持久化文件类似,也是需要加密,尽量不要有可以直接读取的明文,采用aes加密
3、xib和storyboard
ib和sb资源是重灾区,因为这两类配置未见会直接暴露界面布局,机审的时候很容易被检测,如果以前使用xib,可以将代码迁移到storyboard,能过一次包,反之也可以
如果有多个包,不建议使用xib和storyboard,纯代码比较安全
4、本地化文件
本地化string文件是纯明文,很容易被检测对比,这里可以在每个string文件中乱序插入一些无用的本地化配置,比例在40%-60%比较合适
iOS马甲包上包总结–网络篇
本篇将针对iOS上包过程中涉及到的网络相关内容进行一些总结 主要分三个方面,操作过程中的网络环境,服务器连接,wifi信息
1、操作过程中的网络环境
从申请账号到上传安装包的过程中都需要做到硬件隔离,包括使用新的机器打包(黑苹果修改硬件id也可);
网络隔离也必不可少,每个马甲包的账号必须使用不同的网络环境,否则会造成账号和其它账号关联,被苹果一并封号
2、使用4G网络或者使用VPN
4G 从开发者账号申请开始到上传安装包以及后续的数据查看,元数据修改,可以在独立的4G环境(ipv6地址随时在变),所以不用担心ip地址重复
办电信宽带会送好几张电话卡,成本低廉
VPN 同上,在整个过程中开启VPN进行操作,建议每个账号单独开一台VPN服务器,linode一个月5美元,很便宜
主要不用使用ss,v2ray这些代理,非匿名代理有可能被获取到真实的ip地址
浏览器隐身模式,不要在设备直接登录(在实操过程中,这块没有对我们审核造成影响)
从开发者账号申请开始,务必浏览器开启隐身模式进行操作,或者使用独立机器(土豪随意)
切记不用在iOS设备上(App Store Connect,testflight等应用)登录两个以上的开发者账号,会造成账号关联,登录这些app,苹果连设备的手机号都能拿到
3、服务器连接相关(更换访问域名即可)
服务器连接方面主要需要对域名&ip地址进行修改,传输加密也必不可少
4、域名&ip修改:
域名需要新申请,然后指向业务服务器(注意更换ip地址),能直接上ipv6的地址是为最好,方便修改
也可以直接使用CDN服务,隐藏真实的ip地址,国外推荐使用AWS CloudFront,CloudFlare。
5、传输加密:
建议采用全数据加密,例如整个HTTP Body AES加密,RSA加密等,不要使用明文然后做hash校验的加密方式,没有太大作用
根据WiFi信息屏蔽某些功能
通过读取苹果审核过程中使用的WiFi名称,然后对一些可能违规的内容做针对性屏蔽
获取WiFi名称需要appid开启如下能力(未使用到)
然后使用如下代码读取:
func getWiFiName() -> String {
guard let interfaces = CNCopySupportedInterfaces() as? [CFString] else { return "" }
var ssid: String = ""
for interface in interfaces {
if let interfaceInfo = CNCopyCurrentNetworkInfo(interface) as? [CFString: Any],
let tempId = interfaceInfo[kCNNetworkInfoKeySSID] as? String {
ssid = tempId
}
}
return ssid
}
目前监控到有如下四种WiFi,相关使用场景如下,主要在人审环节结合服务器后端判断如果在审核状态的话,做对应的功能屏蔽
WiFi名称
fbi-**** >> 机审
AR >> 人审,一般到这一步就OK了,后面会有ipv6检测,主要在这一步做屏蔽
AppleWiFi >> 人审复核,被拒申述出现较多,大概率被拒
ARNAT64 >> ipv6 only检测
iOS马甲包上包总结-元数据篇
iOS上包过程中需要的一系列元数据都需要注意,重点还是不要跟主包有关联
主要有如下几点:隐私协议,标题,推广文本,关键字,截图,App年龄评级,应用描述,销售区域等
一、隐私协议&支持网址&内购回调
这三个地方都是需要填写的网页地址,注意区分域名,不要跟主包的域名有关联
隐私协议不要简单的复制粘贴,可以去同行app的隐私协议里面复制一大段过来插在开头或者中间,保证内容不一样即可
支持网址需要注明公司或个人信息,支持电话,支持邮箱,这些信息都可以随意编造,跟主包不一致即可。另外需要注意不要有多余的链接链到其它地方,保持干净的网页,免得节外生枝
内购回调地址主要是iap自动续订类型的回调需要用到,如果没有,可填,注意域名区分即可
二、标题&副标题
标题跟还是注意不要跟主包有关联,可以去App Store随便搜一个不同类型的应用过来套上即可,苹果看到名字一样,但内容和类型完全是新的,更容易通过
第一版标题和副标题不要添加太多关键字相关的内容,平常一点,利于审查;后续更新版本的时候再叠上去
三、推广文本
四、关键字
中文这种表意文字不同加逗号,可以将字的顺序越乱越好,让审核人员没法阅读,审核过了以后苹果会自动组词,不会太影响ASO效果
英文这种需要逗号隔开的关键词,需要在前期版本规规避敏感关键词,苹果明确禁止的应该谨慎,例如赌博类,招嫖类等,游戏关键词不要太露骨
五、截图
截图只需在修改了界面的app基础上截取几张图上传即可,如果能上线再针对性的进行优化
另外还需要注意图片上的内容是否违规,如不能有色情,裸露,暴力等内容,版权也很重要,例如有名人头像的,大概率被拒
六、应用描述
尽量编写一些中规中矩的应用描述,介绍一下功能或游戏玩法之类的
如有内购,需要带上内购价格信息已经意思协议等内容
七、销售区域,分类
我们在发布不同的包的时候可以选择不同的区域,比如只发英国,只发美国,主要语言也选择成国家对应的语言,删除多余的国际化文件,这样审核会比较容易
分类选择上主要分类没有什么太大的区别,次要分类可以在合理的范围内选择不一样的分类
iOS马甲包上包总结-银行信息和内购篇
前面已经对代码,界面,网络等一系列的内容进行了总结,本篇主要总结一下在账号申请,付款,收款,内购相关信息处理方面需要注意的内容
一、账号申请阶段
首先,账号申请阶段就要相对隔离,前面已经总结了网络方面的隔离,另外我们还需要注意
付款的信用卡尽量每张信用卡不要超过两个账号使用,苹果官方目前是一个信用卡超过30个开发者账号付款,直接全部封号,保险起见越少越好
不建议网上购买账号,苹果账号在申请阶段,甚至过几个月都不会有问题,但一旦关联的账号出现问题,可能会被误伤,导致封号,损失惨重(亲测血的经验教训)
二、收款和内购
内购:
如果app是纯免费应用,靠广告或其它不涉及支付的方式变现,可跳过这一节
App内如果复核苹果规定的前提下使用微信,支付宝,PayPal,Credit Card等第三方现金方式支付的话,也可以跳过这一节
如想绕过苹果内购使用第三方支付,则需要代码控制根据审核版本,WiFi,经纬度等信息屏蔽第三方支付内容;或者使用网页调用支付,正常时间使用内购,开关开启第三方支付
另外如果有自动续订订阅需要谨慎,苹果对用户付费这个事卡得越来越严,如果要上自动续订订阅务必按照苹果规定填写好相关内购信息,App内在购买页面显眼的位置放好相关的价格介绍,隐私协议等内容
收款:
重点注意:每个开发者账号对应一个收款人账号,不要重复,否则账号关联,封号大礼包
收款仅正常内购的项目需要,大陆公司需要注意对公账号能在银行无限制的结汇,但是需要到银行报备,提供证明
如果填写个人收款账号的话,每年只能结汇5万美金,收入超过5万美金的不建议填个人银行账号
海外账户没有此限制,建议办理香港的储蓄卡,会方便很多
iOS马甲包上包总结-更新篇
跟初次上包一致,需要对代码和资源未见做混淆,混淆风格跟原有的风格保持一致
新增或者原有的功能如有违规,应当根据WiFi,经纬度结合服务器进行屏蔽,WiFi和经纬度屏蔽可以在一直开着,防止苹果审核人员复审(实操过程中,只做了服务器的屏蔽,去其他的)
一、更新周期&更新方式
更新周期建议不要少于两周一次,每次更新的内容不要过多,过多的内容苹果审核人员也会全部复审
如更新时有内购内容,第一版一定严格按照苹果相关规定操作,第一版审核通过后,后续审核会容易很多
iOS混淆脚本使用(注意项目按顺序混淆,避免项目修改麻烦和项目产生更大影响)
下载脚本后,需要在iOS sdk文件中获取 System_Frameworks_iOS 文件内容。按混淆脚本顺序进行混淆,每次混淆完后,记得备份。
1、项目前缀类名混淆
替换脚本重点前后缀,和项目地址即可;后缀混淆,controller → director / model → module 执行两次即可
2、添加混淆代码
替换路径地址,指定前缀。执行完脚本后。会存在引用地址为空的文件,需要手动移除
3、图片资源混淆
修改has值命令:
brew install imagemagick
find . -iname “*.png” –exec echo {} ; –exec convert {} {} ;
本地plist/json文件AES加密
不同的项目,注意切换加密的key值
4、方法混淆
先制作混淆方法映射表,然后做方法名的全局替换。注意不能混淆系统方法、注意检查代理方法的覆盖
原文地址:https://blog.csdn.net/qq_32532651/article/details/130272631
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_19461.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!