发布时间:2020-10-13 15:26:00 访问量:9974
VBP 2 硬核亮点:
业界首次实现了针对 ARM 指令的虚拟机保护
真正实现.NET软件安全:
.NET JIT 加密
.NET 压缩
重磅一:增加 ARM 指令虚拟化
VBP 2 针对 IoT 设备的代码保护提供了更完善的保护方案,本次发版实现了针对 ARM 指令的虚拟机保护。
ARM 虚拟化是 VBP 2 针对 ARM 架构的指令推出的虚拟机保护方式,通过将原始的 ARM 指令进行翻译,转换为自定义的虚拟机指令,运行时在自定义虚拟机执行。支持对armv7(包括 thumb, thumb2)及 armv8 以上指令集进行翻译,安全强度高,可以更有效地保护广大 IoT 软件开发商的知识产权。
核心优势
对于 ARM 指令的代码保护,业内除了本产品外,大都采用基于 LLVM 的代码保护方案。虽然借助 LLVM 框架虽然可以轻松的支持后端指令架构,但在保护效果和易用性上要逊色不少。
产品对比
易用性
Virbox Protector 2 | 基于 LLVM 的代码保护 | |
---|---|---|
离线部署 | 可直接离线使用 | 一般由加固厂商提供设备 |
开发环境影响 | 不需要配置编译环境 | 需要配置编译环境 |
适应性
Virbox Protector 2 | 基于 LLVM 的代码保护 | |
---|---|---|
支持的语言 | 支持几乎所有编译为 Native 程序的语 言如 C/C++, go, delphi, 汇编语言等 | 只支持 Clang 编译器支持的语言 |
支持的语言标准 | 不区分具体语言,支持任意语言标准 | 只支持对应版本的 clang 支持的语言标准 |
安全性
Virbox Protector 2 | 基于 LLVM 的代码保护 | |
---|---|---|
反编译效果 | 无法被反编译 | 可以被反编译 |
函数体边界 | 函数体保护后通过指令切片技术分布在二进制中 的随机位置,无法直接确定边界 | 由编译器生成,函数边界清晰,函数间调用关系清晰可见 |
保护粒度 | 以汇编指令为粒度,保护针对每个指令,保护 的灵活度和自由度高 | 以LLVM 中间语言 IR 为粒度,LLVM 后端会生成相应的 汇编指令,灵活度差 |
总结
- 基于 LLVM 的保护方案,可以直接适配其前端支持的语言和后端支持的平台架构,但也受限于这一特性(比如 Go、Rust、Delphi 等 语言就无法支持)。
- 基于 LLVM 的保护方案,在使用时需要更换已有的编译环境,替换编译器,调整编译选项等,对开发环境造成了很多影响,易用性差。
- 从保护效果上看,基于 LLVM 的保护方案,受限于编译器框架,生成的代码只能做逻辑上的混淆变换,仍然可以被反编译,对控制流的混淆效果有限,且边界清晰,更容易被分析。
重磅二:.NET 版新增功能
增加 .NET JIT 加密
VBP 2 对 .NET 的保护增加了新的保护方式:.NET JIT 加密,是将 .NET 所有方法的 IL 指令经过加密,仅在 .NET 虚拟机进行 JIT 编译阶段才解密,可以防止静态反编译,也能防止 IL 代码在内存被 Dump。JIT 加密可以配合代码混淆、代码加密、.NET 压缩一起使用,达到多层保护的效果,在兼顾性能的同时,更进一步提升保护后代码的安全性。
启用 “JIT 加密” 后,VBP 2 在进行保护时,会将 .NET 方法的 IL 字节码加密,并插入 VBP JIT HOOK 模块完成保护。
在运行阶段,.NET 虚拟机对原程序中的元数据等信息进行解析,最终需要在 JIT 阶段将 IL 方法进行编译,VBP JIT Hook 模块会在此时进行解密,使编译过程顺利进行。
增强 .NET 压缩
.NET 的压缩功能主要为 .NET 程序提供了整体保护的效果,将 .NET 元数据(Meta Data)信息抽取并压缩加密,运行时再由壳代码将其还原,使其能正常运行,可以有效防止 .NET 程序中的方法被 DnSpy,ILSpy,.NET Reflector 等工具反编译。
VBP 2 开始使用了 IL 壳代码,大幅度提升了兼容性,同时增加了对 dll 的保护支持。
核心优势
多重保护:VBP 2 可以对特定 .NET 方法使用代码混淆、代码加密的手段进行针对性保护,也可以用名称混淆、压缩、JIT加密的方式提供整体性的保护,保护效果可以叠加。
支持 .NET Core,部分功能支持 Linux 下 .NET Core。
保护效果
.NET 加密时配合使用 JIT 加密、代码混淆、代码加密、.NET 压缩同时使用,可对所有方法都加密。
原程序:
保护后效果:
重磅三:Java 保护方案
VBP 2 支持对 Java 的 jar 包、war 包进行保护。通过加密 Java 中每个方法的字节码防止反编译,操作简单,运行环境易部署,支持当前主流的 Windows、Linux、ARM Linux 平台。
VBP 1 的 Java 保护方案 vs VBP 2 全新 Java 保护方案
VBP 1 用资源加密的方式加密 Java 代码,开发商需要找到正确的 Java 解释器,部署也需要将加密后的 Java 解释器一起部署,操作复杂而且容易出错,不同的部署系统需要分别加密。
VBP 2 引入了全新的 Java 保护方案,在提升安全性的同时,加密操作体验大幅提升,1 分钟完成加密部署!而且一次加密即可支持主流平台部署:Windows/Linux/ARM-Linux。
VBP 2 Java 保护同时支持了加密应用场景:开发 jar 包给第三方进行调用,对 jar 进行加密。
操作体验质的提升
直接拖入 jar 包,点击保护选中项目即可生成加密后的 jar 包,VBP 2 会对 Java class 中的所有方法的字节码加密,在运行时通过 Java agent 机制在 native 层解密 Java 方法中的字节码,再传递给 jvm 编译生成机器指令执行。
保护效果
使用 jd-gui 对 jar 包反编译效果:
使用 VBP 2 保护后的 jar 包反编译效果:
其他主要更新
本地程序内存校验
内存校验是一种检测程序自身完整性的技术,可以有效对抗文件补丁、内存补丁、软件断点等破解手段,这是很多软件开发商期待的功能,本次发版也将支持本地可执行程序的内存校验功能,同时内存校验还支持 SDK 标签,可以在运行过程时动态地校验。
在加壳保护时,VBP 2 会抽取整个程序中可校验的内存块并拆分,生成校验表。运行时,在程序入口,壳代码会对每个要校验的内存块进行校验,以验证其完整性,如果校验失败,则会清场退出。如果使用了 SDK 标签,则每次调用标签 VBProtectVerifyImage 时都会进行校验。(内存校验表和校验逻辑本身经过了自保护,以保证其安全性。)
反 Run Trace 功能
Run Trace 是调试器提供的功能,用于单步执行每一条指令,并记录每条指令执行时的寄存器状态,是调试追踪和反混淆常用的手段。
被 VBP 2 混淆后的函数的指令,会添加一些暗桩用于检测单步断点,检测到非法调试会执行一些错误的指令,干扰调试分析,从而进一步增强混淆后代码的安全性。
新版优惠活动
1 新客户购买优惠活动
优惠活动 1 :订阅版赠送一个月
活动时间:2020年10月12日-2020年10月31日
适用产品:VBP 2
活动介绍
新客户第一次购买订阅版一年期,赠送一个月使用授权
优惠活动 2 : 永久期九折
适用产品:VBP 2
活动介绍
新客户第一次购买永久期VBP 2,九折优惠
活动说明:如参与其他优惠折扣,本活动不与其他活动同时参与!
如何升级 VBP 2
官网下载地址:
https://shell.virbox.com/down.html