跳转至

Virbox Protector Standalone 概述#

Virbox Protector Standalone 是一款高强度自动保护(加密)工具。该工具提供强大的代码虚拟化、高级混淆与智能压缩技术,无需编程就能达到极高的保护强度,保护您的程序免受逆向工程和非法的篡改,是业界领先的软件保护工具。适用于快速加密方案,不需要编写任何代码,通过设置工具提供选项完成软件加壳保护,方便快捷。

独立版外壳应用场景#

一、功能特性#

  • [ ] 代码虚拟化:将被保护的程序代码转换为虚拟机代码,程序运行时,虚拟机将模拟程序执行,进入和离开虚拟机都有高级代码混淆。虚拟机配合代码混淆可以达到很好的保护效果,尤其是开发者的私有逻辑。
  • [ ] 高级混淆:高级混淆利用花指令和代码非等价变形等技术,将程序的代码,转换成一种功能上等价,但是难于阅读和理解的代码,可充分干扰静态分析。
  • [ ] 智能压缩:应用程序的解压缩含有动态密码,让一切自动脱壳工具失效,有效的阻止.Net、PE 程序的直接反编译,并且有效的防止了加壳后的应用体积膨胀。

二、支持的加密类型#

2.1 系统#

Windows 7及以上版本

Linux明确支持的系统有 CentOS、Ubuntu及Debian-9.4.0系统

macOS 10.4系统以上版本

2.2 编程语言#

C、C++、Java、Delphi XE7及以上、PB、BCB、 C#、VB6.0、 Python、Lua、Perl、R、Ruby、PHP

2.3 插件及框架#

AutoCAD ARX、Revit、Unity 3D、Unreal Engine 4、.NET

2.4 开发工具#

MATLAB、LabVIEW

2.5 文件格式#

32位和64位可执行文件,动态加载的库和驱动程序

三、加密流程指引#

3.1 准备工作#

Virbox Protector Standalone安装完成之后,会看到Virbox Protector Standalone与Virbox用户工具软件,Virbox用户工具是Virbox许可服务的可视化界面工具,可以通过Virbox用户工具,来登录许可,获得使用Virbox Protector Standalone的权限。

3.1.1 一年期订阅(账号版)#

打开Virbox用户工具,我的账号下,登录授权账号(具体如何获取使用权限,参考试用及购买)。

0

登录之后可以在我的软件下,查看到外壳独立版的许可信息。

0.1

3.1.2 一年期订阅(加密锁版)#

插入硬件锁,可在硬件锁下,查看到软件的许可信息。

0.2

3.2 对 Windows 可执行应用程序(exe)和动态链接库(dll)加壳保护#

加壳工具主界面如图:

1

3.2.1 开始进行加密#

直接拖入文件或者选择打开文件的形式,选择需要加密exe可执行程序或者dll动态链接库。

【特别提醒:如果被加壳程序的相同目录下存在 xxx.map 文件,那么会自动加载 map 文件,将函数名称显示在界面当中,目前支持VS、VC、BCD、Delphi编译器生成的map文件】

拖入后主界面如图:

2

3.2.2 具体函数的保护——被保护的函数列表#

Virbox Protector Standalone支持代码混淆、代码虚拟化、代码加密等多种防护方式;

  • [ ] 混淆:将代码指令翻译为机器和人都无法识别的一串伪代码字节流,在具体执行时在对这些伪代码进行翻译解释,逐步还原为原始代码并执行。

  • [ ] 虚拟化:将指令编译为虚拟代码,放在指定虚拟机中运行,目前对指令有一定的格式要求,有的函数可能不能被保护。

  • [ ] 加密:将代码块作为数据,用许可加密函数存储,程序执行到该函数时验证许可并解密,内存中不会暴露完整的代码块,目前有的函数不可添加到保护中。

使用Virbox Protector Standalone时,选择被保护的函数列表,添加需要保护的函数,可以使用性能分析功能,对程序进行分析,并选择重要的函数来保护。

  • [ ] 性能分析:点击性能分析按钮,运行需要保护的程序,执行正常的业务操作,程序中各个函数模块调用的次数实时显示在列表中。如果当前分析的程序位为 DLL 程序,则需要选择启动主程序,主程序启动的工作目录为主程序所在目录。目前仅支持 Windows 的 exe 程序或 DLL 库。

  • [ ] 可保护的函数列表:展示了需要保护程序的所有的函数模块,托管代码程序和非托管代码程序有细微的差别。

【特别提醒:并不是所有的函数模块都能展示出来。1、指令大小小于 15 个字节的函数模块不会展示;2、有的非常规函数模块不会展示(名称中存”.<>@:?“等)】

3

保护方式选择完毕,点击确认完成修改。

3.2.3 加密选项配置#

我们为高级用户,提供了加密选项的功能。PE 和.Net 程序,由于技术不同,所以在加密选项上,略有差异,您可以根据自己的需求,调整加密的具体方式。

  • [ ] 输出文件:可以修改程序保护后生成文件的路径和名称。

【特别提醒: 1 、如果只有文件名称,那么路径为源程序的路径; 2 、如果输出文件名和源文件同名,生成的程序会将源程序覆盖,非常不建议。】

  • [ ] 导入表保护:这个选项能够对 PE 文件中的导入表进行了加密处理,隐藏了 API 列表。基于安全强度的考虑,我们建议用户使用这个选项。

【特别提醒:导入表保护目前只适用于PE文件。】

  • [ ] 压缩:对加壳后的后的程序进行压缩处理,减小体积,同时可以防止静态反编译。

【特别提醒: 1 、由于压缩模块需要一个固定大小的空间,如果被加壳的程序非常小压缩的效果并不明显还有可能出现体积更大的情况,对于体积较大的程序效果明显。 2 、不支持 DotNet动态库的压缩。 3 、不支持 arx 类型程序的压缩。】

  • [ ] 名称混淆:名称混淆,对源程序中的函数名称进行混淆,静态反编译工具显示的函数名为乱码。

【特别提醒:名称混淆目前只能支持 DotNet 程序,并且不支持 IIS 类型程序的混淆。】

  • [ ] 资源保护:加密资源段,对被保护程序的资源区段进行加密,运行的时候需要用户使用相应许可进行解密方可使用程序。

【特别说明:资源保护目前只能支持本地程序。】

  • [ ] ds插件:DS Protector是数据保护工具,可以对程序的数据资源文件进行加密保护。

3.2.4 完成加壳#

所有选项配置完成,点击加壳保护的按钮,完成加壳。提示加壳成功,打开文件所在的目录,即可看到加密之后的xxx.ssp.exe文件或者xxx.ssp.dll文件,修改文件名称,替换未加密的文件进行发布即可。

3.3 Unity 3D引擎开发程序加密保护#

3.3.1 保护背景#

Unity3D主要使用C#语法和开源mono运行开发者的代码逻辑,所有代码都不是编译到EXE,而是位于{APP}\build\game_Data\Managed\Assembly-CSharp.dll(注意Unity-2017位置略有不同)。

而且mono执行原理跟微软.NET Framework兼容但是执行原理完全不一样。传统的.NET Framework加壳全部失效,因为Assembly-CSharp.dll不是PE格式的动态库也不是.NET的动态库,无法从.NET Framework加载,而是由mono.dll读取 Assembly-CSharp.dll的里面C#脚本解释执行。

3.3.2 加密方式#

对于Unity3D的保护方式,主要是通过Virbox Protector Standalone对Unity3D程序的整个生成目录进行加密,可以保护Unity的主要代码逻辑不被反编译,最大程度保护软件开发者的合法权益,同时DSProtector工具可以对Unity软件中的 .resS和resources等资源文件进行加密防止软件或游戏中的资源被非法提取。

3.3.3 源码加密#

通过加壳工具中,打开目录的方式,打开Unity3D的整个生成目录文件。

img

点击加壳保护,提示加壳成功,打开生成目录,默认是在原文件的同目录下生成新的ssp.XXX(Unity3D程序文件夹名称),加密成功。

3.3.4 资源加密#

对 Unity3D 资源的保护的基本流程是,先通过Virbox Protector Standalone 对可执行exe进行加壳,再通过 DS protector 对资源文件进行加密保护。 ①对加密后生成的ssp.XXX下的exe进行加壳。

5

②在加密选项页面将插件的ds按钮打开。

6

点击“立即加壳”,加壳后会额外生成图示两个文件。

7

③打开“DSProtector.exe”,通过xxx.ssp.exe对 资源文件进行保护。

8

选中上一步对 Game.exe 加壳时生成的 Game.exe.ssp 文件及添加资源文件。

9

点击“保护它”,提示加密成功。

10

至此Unity3D程序加密已经完成。

3.4 Python加密流程指引#

3.4.1 保护背景#

Python语言写的程序无需编译成二进制文件代码,可以直接从源代码运行程序。在计算机内部, Python解释器把源代码转换成字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行,这使得 Python程序更加易于移植。

3.4.2 对可执行exe程序进行保护#

参考【3.1 对 Windows 可执行应用程序(exe)和动态链接库(dll)加壳保护】

3.4.3 对.pyc或者.py文件进行保护#

①首先对安装环境 Python 路径下的 python.exe 进行加密。

将 python.exe 拖入到加壳工具Virbox Protector Standalone中。

11

②在加密选项页面将插件的ds按钮打开。

12

③点击“立即加壳”,加壳后会额外生成图示两个文件。

13

python.exe.ssp 是配置文件,在后面对 .py/.pyc 加密时会用到;python.ssp.exe 是加壳后的 python.exe 文件,将 python.exe 剪切到其他文件夹备份,python.ssp.exe 名字改为python.exe 即可。

④打开“DSProtector.exe”对 .py/.pyc进行保护。

8

添加上一步加密 python.exe 生成的 python.exe.ssp 文件。

15

添加要加密的 .py/.pyc文件。

16

点击“保护它”,加密成功。

17

至此,Python 的 .pyc 文件已经加密成功。

3.5 Java加密流程指引#

3.5.1 保护背景#

Java 开发语言以其安全性高、代码优化、跨平台等特性,迅速取代了很多传统高级语言,占据了企业级网络应用开发等诸多领域的霸主地位。特别是近年来大数据、互联网+、云计算技术的不断发展,Java 开发语言更具有不可替代的地位。

不过,Java 最突出的跨平台优势使其要以中间代码的形式运行在虚拟机环境中,因此 Java 代码反编译要比其他开发语言更容易实现,并且反编译的代码经过优化后几乎可与源代码相媲美。为了避免出这种情况,保护软件知识产权,有一种叫做 Java 混淆器的工具被开发出来。

但 Java 混淆器的作用是对编译好的代码进行混淆,使得反编译后的代码混乱难懂,真正起的作用只是增加了逆向工程的难度,最终结果也是治标不治本,对于一些掌握工具的人来说几乎还是透明的。另外由于 Java 程序中会有多重映射关系,因此大多数混淆工具的兼容性会很差。

3.5.2 部署项目并启动服务#

项目放在 webapps 目录下,先启动 tomcat 服务确认能正常启动,启动过后该 War 包会自动解压出一个同名的文件夹#

img

启动 tomcat 服务#

1538105102529

找到依赖的解释器#

服务启动成功后,进入任务管理器-服务-找到目前运行项目所依赖的 jdk , 进入目录找到对应程序 进行加密。 如下图

1538105202198

3.5.3 对.jar或者.class文件进行加密#

①首先对安装环境 jdk 路径下的 java.exe 进行加密,将 java.exe 拖入到加壳工具Virbox Protector Standalone中。

img

②在加密选项页面将插件的ds按钮打开。

5

③点击“立即加壳”,加壳后会额外生成图示两个文件。

img

java.exe.ssp 是配置文件,在后面对 .class/.jar加密时会用到;java.ssp.exe 是加壳后的 java.exe 文件,将 java.exe 剪切到其他文件夹备份,java.ssp.exe 名字改为java.exe 即可。

④打开“DSProtector.exe”对 .class/.jar进行保护。

1538115708840

添加上一步加密 java.exe 生成的 java.exe.ssp 文件。

8

添加要加密的.class/.jar文件。

img

点击“保护它”,加密成功。

img

四、常见问题及解决方法#

4.1 加壳后软件报毒#

问题现象:使用加壳工具对开发者软件进行加壳,然而加密后的程序360认为是病毒软件。

解决方法:提交360认证 ,具体操作如下:

① 软件中可执行文件(不包含驱动程序.sys)及打包后的可执行文件使用沃通(Wosign)签名(使用沃通代 码签名工具并且购 买代码签名证书进行签名,沃通签名相关问题请咨询沃通官方网站客服人员,沃通签名在360认 证过程有很大帮助)。

② 注册并登录360开放平台:http://open.soft.360.cn/。

③ 在“我的软件”页面中选择提交我的软件,如图:

18

④ 选择“仅安全检测”,并填写软件名称,软件版本(主要为了后续记录查看),提交方式可以选择本地上传

安装包,然后提交 软件。

⑤ 同时可以在“软件列表”中查看已经提交过的待检测软件和“通过检测”的软件。目前软件提交后通过检测的 时间大约为1天 。

4.2 如何生成MAP文件#

编译型语言在加壳工具中保护函数是显示的是函数地址,如果想显示函数名称,可以通过生成MAP文件方式进行显示,列举几种语言生成方式:

① BCB程序生成MAP,工程设置如下图 :

19

20

② VC程序生成MAP,工程设置如下图 :

21

③ VS程序生成MAP,工程设置如下图 :

22

23

④ delphi程序生成MAP,工程设置如下图:

24

25

⑤ vb6.0程序生成MAP ,工程设置如下图:

需要在系统环境变量中增加一个名为“LINK”,值为"/MAP"项目,重新启动电脑,这样编译生成exe程序,map 文件就不会自动删除,而得以保留。

26

五、联系我们#

北京深思数盾科技股份有限公司

公司地址:北京市海淀区西北旺东路 10 号院东区 5 号楼 互联网创新中心 C 区 510

官方网站:http://shell.virbox.com/

电话:010-56730936(总机)

传真:010-56730936-8007

工作时间:周一到周五:9:00 - 20:00,周六:10:00 - 19:00