随着移动应用和 IoT 设备的普及,大量的硬件抛弃了传统的 x86 架构,选择使用能耗低、性价比高的 ARM 芯片,ARM 指令级渐渐成为主流,但随之而来的,是愈发严峻的安全问题。
VirboxProtector(简称:VBP)针对 Android 系统的开放性特征,在对其保护上采用了 ARM 虚拟化技术。其安全强度远超于直接对 SO 文件中的代码段压缩或加密,也区别于基于 LLVM 的代码保护,ARM 虚拟化技术是直接对指令进行保护,实现了更高等级的安全保护!
ARM 虚拟化技术原理
ARM 虚拟化延续了 PC 端对 x86 指令的虚拟化保护思路,将其完整地适配到了 ARM 平台,该技术的实现完全独立,由单独的工具来实现,直接对编译生成的二进制文件进行保护。完整的技术实现,由解析,配置,编译(混淆、虚拟化),链接等几个步骤完成。
ARM 虚拟化技术则位于“编译”过程通过将 ARM 指令翻译成自定义的虚拟机指令,并将虚拟机解释器和虚拟指令以指令块和数据块的方式插入“块表”中,最终链接成新的可执行程序。
虚拟化技术特点
01无法被反编译
通过指令切片,间接跳转等处理,生成的指令块无法被 IDA 分析,只能查看汇编指令。
02无函数边界
通过链接器乱序再重定位,生成的指令块在可执行文件中的位置是随机的,函数保护后变成了无数个随机位置的指令碎片,无法知道函数的边界。
03更精细的保护粒度
直接对 ARM 指令保护,可以更精细的控制指令和寄存器,灵活性高,能够达到更高的安全性上限。
04适应性高
直接处理 ARM 指令,不受限于开发语言和语法标准,几乎可以保护任何编译为 ARM 架构的程序,如 golang 等。
虚拟化效果
示例 : 对 rc4 算法保护,经过 IDA Pro分析
如何使用虚拟化保护
1.下载安装VirboxProtector
2.将可执行程序或者 so库添加到工具里,配置函数选项,选择虚拟化保护即可。
适用的程序类型
Virbox Protector 支持 ARM Linux /Android 系统下的 so库和可执行程序,支持 macOS/iOS 主程序和 dylib。
开发语言支持
C、C++、Objective-C、Swift、go、汇编语言等。
架构支持
x86、x64、arm32(支持thumb/thumb2)、arm64(支持 arm64e)
Virbox Protector
让加密不再困扰软件开发者。