技术原理

ARM-虚拟化保护 延续了 PC 端对 x86 指令的虚拟化保护思路,将其完整地适配到了 ARM 平台, 该技术的实现完全独立,由单独的工具来实现,直接对编译生成的二进制文件进行保护。 完整的技术实现,由解析,配置,编译(混潜、虚拟化),链接等几个步骤完成。 ARM-虚拟化技术则位于“编译”过程,通过将 ARM指令翻译成自定义的虚拟机指令,并将虚拟机解释器和虚拟指令以指令块和数据块的方式插入“块表”中,最终链接成新的可执行程序

ARM 虚拟化保护特点

pr1

无法被反编译

通过指令切片,间接跳转等处理,生成的指令块无法被 IDA 分析,只能查看汇编指令

功能点图片2

无函数边界

通过链接器乱序再重定位,生成的指令块在可执行文件中的位置是随机的,函数保护后变成了无数个随机位置的指令碎片,无法知道函数的边界。

功能点图片3

更精细的保护粒度

直接对 ARM 指令保护,可以更精细的控制指令和寄存器,灵活性高,能够达到更高的安全性上限。

功能点图片4

适应性高

直接处理 ARM 指令,不受限于开发语言和语法标准,几乎可以保护任何编译为 ARM 架构的程序,如 golang等。