近年来,随着移动互联网的飞速发展,移动安全产业步入了快速增长期。在深耕移动安全和应用安全产品的同时,通付盾移动安全实验室重视虚拟机保护(VMP)技术在移动应用加固的安全增强作用,经过技术上持续不断的攻坚克难,已将安全虚拟机更新到第三代,成为国内外首家真正意义上将虚拟机保护(VMP)技术运用到移动应用加固领域的厂商。
虚拟机保护技术是何方神圣?核心思想是什么?通付盾虚拟机保护技术应用于移动安全的哪些场景?成熟的虚拟机保护技术与市面上的伪技术如何区分?
今天,通付盾带你一起体会已成功服务多个企业级客户的新一代虚拟机保护(VMP)技术的独到之处,并进行一次针对移动应用加固VMP技术的去伪存真之旅。
1、何谓虚拟机保护
虚拟机软件保护技术是被动型软件保护技术的分支,具体来说是添加有意义的混淆代码的一种变型使用。根据应用层级不同,基本可分为硬件抽象层虚拟机、操作系统层虚拟机和软件应用层虚拟机。用于保护软件安全的虚拟机属于软件应用层虚拟机,同层的虚拟机还包括高级语言虚拟机,如java程序语言运行环境jvm和.net程序语言运行环境CLR,后者采用虚拟机的原因是便于移植,因此编译器没有直接生成可直接在机器上执行的nativecode,而改为生成中间代码byte-code,再通过在不同机器环境下安装对应版本的虚拟机对byte-code进行解释执行,从而实现跨平台运行。
用于保护软件安全的虚拟机采用类似的流程。虚拟机保护软件首先会对被保护的目标程序的核心代码进行“编译”——需要注意的是,这里被编译的不是源文件,而是二进制文件——并生成效果等价的byte-code,然后为软件添加虚拟机解释引擎。用户最终使用软件时,虚拟机解释引擎会读取byte-code,并进行解释执行,从而实现用户体验完全一致的执行效果。
要设计一套虚拟机保护软件,首先要设计一套虚拟机指令,也即是byte-code的指令集表,生成byte-code的过程,实际是将原始机器指令流等价转译成虚拟机指令流的过程。虚拟机指令集表与原始机器指令集表越正交越好,安全系数越高。另外,指令的设计应尽可能地具备图灵完备性,能够完整地表达出原始机器指令的所有可能表达。图灵完备性越好,则虚拟机保护引擎的保护的覆盖范围越广,健壮性越高。在软件运行时,编译产生的Byte-code由内嵌入软件可执行文件中的虚拟机解释引擎,采用读取-分派的方式解释执行。
2、通付盾安全虚拟机PayegisVM3.0解析
在移动安全实验室开发和实践安全加固产品的早期,实验室成员已早早注意到了虚拟机保护技术对于应用加固产品的安全增强作用。但虚拟机保护技术在移动应用加固产品上实践会随之带来较大的兼容性和性能的影响,所以在实践中我们秉持着小心求证、步步推进的原则,一直在研究和落实着针对移动平台,虚拟机保护技术与应用加固产品的最佳结合点。
结果是喜人的,目前通付盾安全虚拟机已经更新到第三代PayegisVM3.0,而对于保护效果也是令人满意的。
对于一段基本逻辑代码,保护前如下所示,指令标准,易被分析。
而经过虚拟机保护后,效果如下:
我们可以看出,符合x86或arm体系架构的标准汇编指令(mov、add、pop等),已变成了自定义加密汇编指令(xchg、db、dq等)。
3、去伪存真——揭开移动应用VMP的真面目
通付盾移动安全实验室研究和实践移动应用虚拟机保护技术的过程是艰辛的,因为涉及到众多体系架构(x86、arm等)的研究以及复杂的二进制语言开发,使得相比dex加壳、so加壳技术难度更高,服务也更难稳定。
近期,也有不少技术论坛和博客声称发布了针对移动应用的VMP技术。经研究,大多数技术方案并不成熟,有的方案甚至和VMP的核心思想有本质上的区别。主要有以下几种:
(1)代码抽取和隐藏。将功能函数的实现提取并加密存放在应用的其他文件目录下,运行时恢复。这是一种代码隐藏技术,与真正的VMP有很大的区别。
(2)代码混淆。对程序功能代码进行控制流平坦化、插入虚假控制流、花指令等方式进行处理,使代码可读性降低,增大逆向工程的难度。这是一种代码混淆技术,与真正的VMP有很大的区别。
真正的虚拟机保护技术应是基于一套高质量的自定义指令集和自定义虚拟机运行环境的动态代码保护方案。通付盾移动安全实验室基于多年技术研究和沉淀,是国内外首家真正意义上将虚拟机保护技术运用到移动应用加固领域的厂商,并已经过客户和市场的检验。诚邀更多企业一起,践行移动应用安全,保护广大网民的网络资产!
关于通付盾移动安全实验室:
秉着技术为先,脚踏实地的原则,围绕科研机构和学科带头人,通付盾移动安全实验室(BeiDouLab)于2012年底正式成立,陆续孵化了如移动应用加固、移动应用检测、移动应用渠道监测等多项移动安全产品。