中文站

用数据告诉你:SDK加固为什么应该选择网易易盾

在《为什么SDK加固会那么重要?网易易盾专家的四点解读》中,我们介绍了SDK加固的重要性以及易盾SDK加固的2种方案的基本实现原理。作为姊妹篇,这篇文章将为大家解读下易盾SDK加固的特点与优势,以及和某友商的对比测评。  

一、易盾SDK加固有什么特点?

对于接入者而言,一个SDK或通用框架的易用性、稳定性、兼容性、性能是非常重要的指标,而对于安全加固而言加固强度与加固体积又是非常重要的因素,因此我们将从接入的易用性,加固强度、稳定性、性能、加固后体积等核心指标上进行分析。

易用性

易盾SDK加固后直接替换加固前SDK即可,集成后无需做初始化,就像使用未加固前的SDK一样,对接入者完全透明。这一点在自动化构建上将非常方便(后文将具体讲),因此在易用性上易盾SDK加固对开发者是非常友好的。

加固强度

易盾SDK加固方案包含VMP以及Java2C两种方案。VMP方案将待保护类的方法进行抽空,对抽取的指令进行加密处理,在运行时通过自定义虚拟机执行,同时对指令操作码做了重新映射,极大的提高了分析破解的难度。

Java2C方案将待保护类的方案进行Native化,Java层原函数逻辑转为了JNI层的C/C++代码实现,由于该过程不可逆,因此从Native层还原回原Java层逻辑的门槛与难度会大大增加,几乎不可能。

稳定性与兼容性
易盾SDK加固VMP与Java2C方案,不仅应用在SDK加固业务,在Apk加固也早已应用多时,经受过大量的真机测试与线上环境的考验。这两种方案对对市面上Top 100的应用通过云真主机的百台测试机进行测试,通过率达到99.6%以上,远远超出资质要求的90%的标准。对于安卓的操作系统从4.x到10.x版本均可全面兼容,适配的范围广。从各类的应用中挑出一个代表性的进行测试,测试的通过率如下所示:

另一方面在客户对接中,我们也遇到过一些先试用友商SDK加固,但运行测试时出现崩溃转而试用易盾SDK加固的客户,试用后未出现稳定性和兼容性问题。

性能

对于绝大部分场景,SDK加固的VMP方案的性能足以满足用户需求。在少数对性能要求比较高的场景,比如图像绘制,涉及到View与UI状态的实时更新,如果每一帧绘制性能都有所降低,最终可能会造成用户视觉上的卡顿。对于这种场景,可以使用Java2C方案进行SDK加固。另一方面,对于某些对性能影响很大但不是很重要的类,也可以通过加类名单过滤的方式过滤掉。

因此在性能方面,易盾SDK加固完全可以覆盖满足用户的各种业务场景。

加固后体积

由于SDK的特殊性,SDK作为一个独立组件,将最终被开发者的用户集成,而SDK相对Apk而言一般体积较小,同样的增量对于SDK而言,用户增量感知上是比较明显的,因此SDK加固后体积增量是一个非常重要的指标。

实际上在对接客户过程中,我们了解到某些客户对于SDK加固后的体积,的确是非常在意的,因此我们在体积增量控制这方面也做了很多优化。


部分客户加固前后体积对比数据  

通过上表客户的数据可以看到易盾SDK加固前后体积增量非常小,即使so包含主流的5种abi,体积增量也基本不会超过800kb;另一方面,因为VMP方案会将Java层代码指令抽空,然后加密压缩,因此SDK加固后的体积不会随着AAR本身的体积增大,而导致增量越来越大,甚至在某些情况下可能会略有减少。

二、测评

以下测评来自使用易盾SDK加固服务的某客户给的原始包,以及友商加固包。该客户原始包为4830kb的aar包,该aar包含java代码以及so,其jni目录只包含一个armeabi架构的so。


从上表可以看出:

在接入便捷性上:易盾SDK加固完胜,无需初始化意味着对原开发者而言无代码侵入性,使用上就像使用未加固SDK一样,仅需替换加固前SDK即可,这一点在自动化构建流程中优势明显。例如:我们某客户使用多AAR模式,要加固的AAR共有十多个,AAR的加固、接入、编译、打包合并到最终APK的所有流程,都是通过脚本自动完成。如果需要开发者主动在Application中做初始化的话,那么在接入以及编译环节,就需要开发者写代码通过字节码注入的手段,修改接入者原始Application代码逻辑,以便实现流程的自动化构建。如果同时集成的AAR比较多,这些字节码注入工作量会比较大,给接入者增加额外的非业务逻辑代码编写工作量。而易盾SDK加固无需初始化,意味着只需通过脚本替换加固前AAR即可做到加固、编译、打包的自动化构建。

在强度方面:目前业界各厂商基本都是使用的第三代VMP保护或最新的类Java2C方案,在强度上基本都相当。

在稳定性方面:虽然在客户对接过程中,遇到2个客户是先试用友商SDK加固运行崩溃,转而试用易盾SDK加固。但由于稳定性是最基本指标,基本上各厂商都会进行大量的真机测试与云真机兼容性测试,达到一定数据标准后再对外推出自己的相应服务,所以基本上该指标各厂商差异不会非常大,可以认为基本相当。

在加固后体积增量方面:易盾增量为151kb,友商增量为1171kb,易盾加固后体积增量只占友商的13%不到,优势明显。

另外易盾SDK加固在客户对接过程中,也积累了一些真实场景下与友商相比的差异化方案,比如多AAR模式,易盾SDK加固支持多个AAR加固后随意搭配,更加灵活,同时这些多个AAR同时集成也无需初始化操作。

网易易盾提供专属定制加固服务,有效提高SDK安全等级,点击免费试用。