虚拟机保护技术的实践与体会(下)

  • 来源:
  • 更新日期:2018-05-22

摘要:虚拟机保护软件首先要设计一套虚拟机指令也即是byte-code的指令集表生成过程实际是将原始机器指令流等价转译成虚拟机指令流的过程。虚拟机指令集表与原始机器指令集表越正交越好安全系就越高。

 虚拟机保护软件首先要设计一套虚拟机指令也即是byte-code的指令集表生成过程实际是将原始机器指令流等价转译成虚拟机指令流的过程。虚拟机指令集表与原始机器指令集表越正交越好安全系就越高。

另外指令的设计应尽可能地具备图灵完备性能够完整地表达出原始机器指令的所有可能表达。图灵完备性越好则虚拟机保护引擎的保护的覆盖范围越广健壮性越高。在软件运行时编译产生的Byte-code由内嵌入软件可执行文件中的虚拟机解释引擎采用读取-分派的方式解释执行。
移动安全实验室开发和实践安全加固产品的早期实验室成员就已早早的注意到了虚拟机保护技术对于应用加固产品的安全增强作用。但虚拟机保护技术在移动应用加固产品上实践会随之带来较大的兼容性和性能的影响所以在实践中我们秉持着小心求证、步步推进的原则一直在研究和落实着针对移动平台虚拟机保护技术与应用加固产品的最佳结合点。
3c6c00015599df67a774.jpg
结果是喜人的目前通付盾安全虚拟机已经更新到第三代PVM3.0而对于保护效果也是令人满意的。
通付盾移动安全实验室研究和实践移动应用虚拟机保护技术的过程是艰辛的因为涉及到众多体系架构的研究以及复杂的二进制语言开发使得相比dex加壳、so加壳技术难度更高、服务也更难稳定。近期也有不少技术论坛和博客声称发布了针对移动应用的VMP技术。经研究大多数技术方案并不成熟有的方案甚至和VMP的核心思想有本质上的区别主要有以下几种:
代码抽取和隐藏。将功能函数的实现提取并加密存放在应用的其他文件目录下运行时恢复。这是一种代码隐藏技术与真正的VMP有很大的区别。
代码混淆:对程序功能代码进行控制流平坦化、插入虚假控制流、花指令等方式进行处理、使代码可读性降低增大逆向工程的难度。这是一种代码混淆技术与真正的VMP有很大的区别。
真正的虚拟机保护技术应是基于一套高质量的自定义指令集和自定义虚拟机运行环境的动态代码保护方案。