0

Image Description

荆文征

Zhidu Inc.


你好,再见

马甲包 ios

  • 小酒馆老板
  • /
  • 2019/2/27 13:29:0


H3

什么是马甲包

马甲包,就是换汤不换药。同一款app,通过不同的名称,不同的icon,不同的介绍等等,存在于应用商店。


Image Description
哔哩哔哩的马甲包

马甲包带来的好处和他存在的理由。

  1. 抗风险: 正常情况下,任何一款产品都是要不断的更新功能的。如果我们直接在主包上更新,一旦新功能不被用户接受那就损失大了,我们前期大量投资带来的用户将会流失,这对很多产品开发者来说是不可承受之痛。如果使用马甲包,则可以随意测试新功能,好的功能就在主包上迭代,不好的也无所谓,马甲包本身就是来背锅的。
  2. 导量: 主包和马甲包属于同一个平台,用户信息可以共享;通过弹窗,广告,Push等引导用户到App Store下载主App;有一部份App接了网盟相互导流。
  3. 增加关键词覆盖数: App Store关键词长度上限是100个字符,据了解人为正常优化的极限是关键词覆盖数在4000左右,那些覆盖数在8000+的都是利用了苹果漏洞。所以,多做一个马甲,也就意味着覆盖的关键词可以更多。
  4. 刷榜
      1. 积分墙: 理论上是真实用户,冲榜量级大,可靠后续补量维持;但冲榜和维榜费用高昂,非一般产品所能承受。
        2. 真机: 利用真实机器操作任务,但不能抹机,否则就成假量了,成本相对较低。
        3. 技术流: 机刷,服务器控制操作,成本最低。
    上面三种方式,机刷是最便宜的,但是风险高,容易被苹果后台发现下架,所以一般用马甲包来做机刷,以此来抵抗风险。

H3

马甲包的上架问题

在安卓上,其实还好,不会有哪个app厂商,专门的对马甲包进行封杀,或者严查。但是在ios上架马甲包成了运营的噩梦。

因为在App Store 审核团队条例中,就有专门的条例。

如果你尝试上传,你就直接违反了 App Store 审核指南 的 4.3 条例。

4.3 重复 App
请不要为同一个 app 创建多个套装 ID。如果您的 app 针对特定位置、运动队、大学等存在不同版本,请考虑提交单个 app,并提供 App 内购买项目以提供不同的功能。同时,请避免继续在已有大量类似 app 的类别下进行开发;App Store 上已经有太多模拟放屁、打嗝声音的 app,以及手电筒和爱经 app。上传大量相似版本 app 的开发者会遭到 Apple Developer Program 的除名。

一般的马甲包,被拒绝也都是因为 4.3 条例。

而在下面我们就聊聊 App store 针对,马甲包的审核流程吧


H3

App Store 审核流程

预审

首先,在上传 ipa 的过程中,就会有一道审核。但是基本的审核还是比较简单的,它会检查你的ipa包内的 例如,icon 文件是否齐全,或者你已经 上传了,同样的 bundile id 版本的包等

在这个阶段,是不会对我们是否是重复代码进行审核的。所以,只要是合格的 app,在这里是不会有任何问题

机审

这个传说中的机审,因为外界也无法知祥 App Store 审核团队的审核流程,以及具体的审核系统,所以都只是猜测。

这里有一篇文章,详细的描述了,具体的 App Store 审核团队的隐秘, iOS的审核机制/算法/审核团队大揭秘, 感兴趣的可以看一下。

这里也只是粗略的说了一下,app store 审核团队有ai审核,但是具体如何,目前不得而知。

但是可想而知的肯定他会扫描你的 ipa 包内的图片等文件资源,以及你的二进制代码。 甚至估计会进行 Mach-O 二进制文件扫描,类似于 ida。 可以清除的看到,你的方法,方法流程,甚至是里面的代码详情。在这种情况下,如果只是简单的实现 icon 的替换,以及 名称的修改。你的软件,是过不了这一个关卡的。

那么我们直接修改代码的名称,比如方法 SwiftObejct().print1() to Swift9af43ec().e3d48b() 不就好了? 目前的脚本,基本都是使用了类似的方法。

例如 swiftshield ,这个框架就是,实现了一下的功能

class fjiovh4894bvic: XbuinvcxoDHFh3fjid {
  func cxncjnx8fh83FDJSDd() {
    return vPAOSNdcbif372hFKF()
  }
}

但是现在也存在一个问题,这是 iOS马甲包混淆必过4.3审核上线解决方案

第三次被打回已经惊动了老板,再想不出好的固化混淆方案我觉得差不多可以收拾东西了。这次苹果的拒绝原因更令人窒息,他说我们的API加密性质太明显,认为我们的APP一定藏有什么隐藏功能,还给我们吃了一张延迟审核的黄牌。经过我们一波分析之后,认为这几次被打回的经验中,苹果没有涉及到说我们的UI有什么相似的地方,所以,只要我们能把这个马甲包做到变成我们开发人员都认为是另一个APP即可。

我们可以看到,在这里如果过分的加密的自己的ipa 代码,会直接被app store 审核机审阶段,进行驳回的。 以上的解决办法,我们目前了解到的可以使用 顶象iOS加固保护 进行 ios 加固。这个后面会聊一下。

另外我们也说到了,我们的资源文件也会被扫描,所以我们要尽量修改所有资源文件的md5.

如果做到了这个,你的代码就会很大程度的不会被认为 是已经存在的重复的代码,另外你的资源也没有其他的app重合。其实就是 论文去重 给翟老师上香

人审

这里就有点让人琢磨不透了,因为不可确定性条件太多。。。

你很难保证自己的软件遇到什么样的人,另外你也不知道 app store 审核团队,都有什么样的人。他是带着如何的心情,进行软件的审核。兴许一个大姐姐,正好和男朋友吵架了,你上架一个 恋爱,app。我不敢保证你会不会特殊对待。会不会加大审核的要求。 当然,以上全都是猜测,人家肯定是有自己的职业能力的

但是,正如上面所说,我们很难保证没有任何问题。但是我们要竭力,避免一个问题。 那就是你不能 ui,一摸一样。 你保不齐,两个 app 就遇到同一个审核人员? 人家就看出来了! 你这完全就是一个app!

所以在ui上,可以进行一些优化。 当然这里要看下的功夫有多深,简单的换色 换 icon,估计已经不管用了。我们要从更高的层次来想。比如直接每个软件都创建一个独立的页面?等。这个可以由具体情况来定。

简单来说,人审阶段,你要做好会遇到,你的马甲包子程序,和主程序,审核人员是同一个人。所以在ui要进行处理。另外,你当然可以做到,在审核版本直接展示不一样的页面。在审核结束后,再开启。具体情况,具体分析

事实上,当我们成功欺骗了人审之后,我们就进入了,上架阶段了~

在这里我们说一下基本的准备请款吧,毕竟有些东西我们还是注意下的。


H3

马甲包的基础设施建设

  1. 开发者账号,你至少做到,你的马甲包和你的主app不能是同一个账号 不解释
  2. 打包的电脑,不清楚是否在 机审的条件中
  3. 上传ipa的 机器ip
  4. 相关的材料,例如联系人信息,公司名称,隐私协议链接

H3

混淆代码 比较

具体我参考了, 为了保护公司的 App 安全,我用遍了市面上的加固产品


Image Description
五款iOS加固工具比較

  1. 功能。这几款工具都具备了市面上目前常见的字符串加密、代码和符号混淆、代码混乱等基础功能。其中,网易iOS加固和数字遁甲iOS加固还提供了防调试功能,开启后自动注入防调试代码,省去了手写;而顶象iOS加固集成了代码虚拟化功能,开启后会使函数体消失,进入虚机运行,整体加固效果较佳。
  2. 操作。Obfuscator-LLVM集成到新版xcode(9.4.1)上,操作比较麻烦。网易iOS加固单独工具操作比较简单,但是不能集成到xcode使用;360加固和数字遁甲iOS加固是在线服务,也比较简单;顶象iOS加固既可以在线使用,也可以集成到xcode上,可谓两不误。
  3. 语言支持。swift是苹果2014年发布一个新编程语言,bitcode是编译的中间语言,都是比较常用的。但是除了顶象iOS加固外,其他均不支持。
  4. 配置方式。Obfuscator-LLVM、网易iOS加固、顶象iOS加固的配置方式类似。
  5. 版本更新。Obfuscator-LLVM是全部免费的,但是已经停止了更新。其他产品都有更新。
  6. 加固文件。顶象iOS加固在线使用时,不需要上传源码,这与其他几个在线加固的产品不同。

作者:奔驰雪铁龙
链接:https://juejin.im/post/5b990021e51d450e674927e7
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


H4

顶象代码混淆

其他的代码混淆,我没有怎么接触。主要接触了,顶象技术的代码混淆。

以下,我们从顶象技术给我的demo,可以看到以下加密方式


Image Description
五款iOS加固工具比較

我们使用 Hopper Disassmbler v4 可以看到如下,我们主要看 第二个方法 也就是 isVaild_2 方法


Image Description
isVaild_2 虚假流程处理

我们可以看到,确实可以起到混淆代码的作用。而且,我们虽然只是想 混淆代码,过机审。额外带来的好处就是。 安全。这样即使别人逆向了程序,也无法看透这个代码真是的流程等。


H3

总结

如果想上架 ios 马甲包, 需要一下问题

机审方面 - ipa 代码,以及 资源文件需要进行处理
人审方面 - ui 方面,需要专门制定

无论多少的马甲包,都离不开以上问题。

比较无奈的就是,即使审核完成。但是还是会面临着,下架的问题。

如新闻 2019年苹果App Store清理马甲包各类应用近5 万!

马甲包,是好事儿,也不是啥好事儿

专栏: 杂谈
标签: ios 马甲包 obfuscator