July 5, 2019

热更新使用概况

热更新使用概况

如果你是一个安卓应用的开发者,那么你一定对热更新的概念有所了解,甚至你的应用中也采用了某种热更新技术。热更新技术在几年前就被人提出,自然是有其市场诉求。当一个应用发布之后,开发者突然发现了一个严重bug需要紧急修复,然而从代码修改测试,联系应用商店更新,用户下载更新,需要一个很繁琐的流程。然后对于bug自身的修改也许只是一行代码或一个变量的调整。面对这样的情况,安卓的开发者开始寻求简单快捷的更新方式,热补丁技术应运而生。

随着最开始的Dexposed,Q-zone超级补丁,Andfix,到现在的Tinker,Sophix,热补丁技术在这些年也有了很多的改进和完善。之前也会很多非常好的文章介绍常见的热补丁技术。在这里非常推荐Sophix团队人员出版的《Android热修复技术原理》一书。其他优秀的介绍文章也会在参考文献中列出。

从技术实现来看,热补丁通常可以采用Native的方式,和Java层面进行热更新。

  • Java 层:通过动态加载代码和资源来实现。
  • Native 层:直接在native层进行方法的结构体信息对换,从而实现完美的方法新旧替换,从而实现热修复功能。

而从实现效果上看,热补丁可以以是否应用需要重新启动来区分。2016 Google 的 Android Studio 推出了Instant Run 功能同时提出了3个名词:

  • “热部署” – 方法内的简单修改,无需重启app和Activity.
  • “暖部署” – app无需重启,但是activity需要重启,比如资源的修改.
  • “冷部署” – app需要重启,比如继承关系的改变或方法的签名变化等

不管热补丁如何分类,它最终实现的结果就是在不通过应用商店更新的情况下,改变现有APP的运行行为。然而,真正快捷更新的方式同样带来了安全隐患。绕过应用商店的更新方式也同样绕过了商店的审核,那么更新代码的安全就完全掌握在开发者手中,这种方式给了恶意应用开发者或是唯利是图的软件公司极大的便利。通过热更新的技术,应用提供商完全绕开应用商店,可以在用户不知情的情况下做各种恶意行为,包括但不限于盗窃用户隐私,监听用户行为,恶意刷量,扣费。

那么到底有多少厂家采用了常见的热更新技术呢?Trustlook团队通过自研发的App Insight技术平台对腾讯和华为商店的最热门应用进行了扫描。其中我们对华为商店的最热门的和历史累计下载数量最高的5000个应用进行了扫描,其中有将近12%的热门APP使用了常见的热更新技术,从下面的饼状图中我们可以了解这些热更新使用的比例:

Alt

而在这些使用了常见热更新技术的应用中,使用Tinker的应用占了%63的比例,其他应用中采用了美团Robust,Sophix和AndFix的比例较高。也就是说在最热门的5000个应用中,每8个应用中就有一个应用使用了常见的热更新技术,而这些应用有权利自由更新自己的代码。

然后,我们对腾讯应用商店的1000个热门应用进行了检测,而腾讯商店中采用了常见热更技术的应用超过了220个,使用比例超过%22。我们可以从下图中了解其中常见热更技术的使用比例:

Alt

我们看到同样Tinker的比例非常的高,然后同样是Sophix, AndFix和美团Robust,而Nuwa在腾讯商店的使用率比华为商店要高一些。我们看到在腾讯商店,常见热更技术的使用率则更高。每4,5个应用中就有1个应用采用了常见热更技术。虽然这些应用都通过了各自商店的安全审核,然而我们知道这些应用的开发者其实保留了更新代码的权利,这对安装了此类应用的用户带来了不可预测的安全风险。

安卓平台的开发性给开发人员带来很多便利,这同样使得恶意软件开发者和黑产集团如鱼得水。安卓平台的安全一直是业界重要的关注点。Trustlook团队自2013年创建以来,一直专注安卓移动安全,团队独立研发移动样本深度分析审核平台App Insight。用户可上传Android APK文件,并在几分钟内收到详细的安全分析报告。 App Insight使用了真实设备沙箱系统,通过静态和动态等分析方法发现各类隐藏的恶意和敏感行为。

参考文献:

Android热更新技术的研究与实现

Android热修复技术原理详解(最新最全版本)

Android热更新方案Robust

Android热修复框架之优逆势分析