用数据告诉你: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加固的客户,试用后未出现稳定性和兼容性问题。

性能

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

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

加固后体积

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

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

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

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

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

二、测评

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

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

从上表可以看出:

  • 在接入便捷性上 :易盾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加固安全解决方案 。

原文 

https://segmentfault.com/a/1190000021093499

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 用数据告诉你:SDK加固为什么应该选择网易易盾

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址