“选项” 部分
“工程” 部分的 “选项” 小节允许您配置各种保护参数:
虚拟机
- 版本 – 此选项允许指定虚拟机的版本(默认值为当前版本)。选择“VMProtect 2.X”将使用旧版本的虚拟机,其编译生成的文件可更小。
- 实例 – 此选项允许指定虚拟机副本的数量(默认值为10)。每个虚拟机都具有独特的属性集(不同的寄存器位置、不同的字节码方向、不同的命令处理程序等),这使得对虚拟化代码的分析和破解更加困难。
- 复杂性 – 此选项允许指定在虚拟机内创建复杂处理程序(由几个简单处理程序组成)的概率。此选项还极大地复杂化了虚拟化代码的分析和破解。随着复杂性增加,受保护文件的大小也会增加。
文件
- 内存保护 - 该选项允许您保护内存中的文件映像不受任何改变(对所有没有 WRITABLE 属性的部分检查数据完整性)。在将控制权传递给程序的原始 EntryPoint 入口点之前,会进行图像完整性检查。如果违反了完整性,会显示相应的信息,并且程序停止执行。
- 导入保护 - 这个选项允许隐藏被保护程序使用的 API 列表,不被破解者发现。我们建议在使用这个选项的同时对输出文件进行压缩。
- 资源保护 - 该选项对程序的资源进行加密(除了图标、清单和其他服务资源)。
- 压缩输出文件 - 这个选项允许您压缩受保护的文件以减少其大小。当被保护的文件被执行时,程序会自动解包。整个解包过程没有任何磁盘写入,完全在 RAM 中进行。
当使用这个选项时,我们还建议将 EntryPoint 入口点 包含到受保护对象列表中。
程序启动时,代码解包后,控件将传递给 EntryPoint 入口点。如果 EntryPoint 的代码是虚拟化的,那么这段代码将与解包器本身的代码在同一个 VM 解释器上执行。EntryPoint 的虚拟化与受保护文件的压缩相结合可防止手动解包受保护文件,因为在这种情况下,入侵者必须恢复 EntryPoint 代码才能获得工作文件映像。 - 附加 - 额外的保护级别:
- 水印 - 允许在工程中添加 水印 。
- VM 分段 - 当文件被编译时,新的分段将被添加到存储各种系统数据的地方(虚拟化和变异代码、VM 解释器、水印等)。此选项允许您为这些新段指定名称。我们建议将分段的标准 “.vmp” 名称更改为其他名称(例如 “.UPX” )。
- 剥离调试信息 - 剥离调试信息会妨碍破解者对代码的分析。
- 剥离重定位 - 一些编译器(即 Delphi)为操作系统不使用的 EXE 文件创建重定位表来加载 EXE 文件。如果启用该选项,则重定位表占用的空间将用于 VM 需求。
检测
- 调试器 - 此选项可防止调试受保护文件。有两种类型的调试器:用户模式调试器(OllyDBG、WinDBG 等)和内核模式调试器(SoftICE、Syser 等)。在将控制权传递给程序的 EntryPoint EntryPoint 入口点之前执行调试器检测。如果检测到调试器,则会显示相应的消息并且程序停止执行。
- 虚拟机工具 - 此选项禁止在各种虚拟环境中执行受保护的文件:VMware、Virtual PC、VirtualBox、Sandboxie。在将控制权传递给程序的 EntryPoint 入口点之前执行虚拟化检测。如果检测到虚拟环境,则会显示相应的消息并且程序停止执行。
消息
在这里您可以自定义程序在检测到调试器、虚拟化工具、文件被破坏或试图执行受序列号保护的代码时显示的提示信息。
授权参数
选择一个在授权管理器 中创建的工程文件作为授权参数文件。默认情况下,会使用当前的工程文件。