VMProtect 是保护应用程序代码免遭分析和破解的可靠工具,但只有在正确构建应用程序内保护机制并且没有可能破坏整个保护的典型错误的情况下才能最有效地使用。
接下来为大家介绍关于VMProtect主窗口中的控制面板,其中包括:“项目”部分、“功能”部分和“详情”部分。本篇文章将对其中的“项目部分”进行详细介绍。
“项目”部分
“项目”部分包含以下小节:
- 保护功能- 允许选择保护对象
- 许可证– 允许管理许可证和序列号
- 文件– 允许将附加数据文件或 DLL 包含到受保护的 EXE 文件中
- 脚本——允许通过内置的 LUA 脚本语言增强保护能力
- 选项- 允许配置应用程序保护参数
▲保护功能部分
此部分用于选择必须保护哪些功能。
>添加功能
要向项目添加新对象,请单击工具栏上的“添加功能”按钮,或在上下文菜单中选择相应的项目,然后出现一个新的功能对话框:
指定函数的地址,或者在快速搜索框中键入函数名称,直接从“函数”选项卡的列表中选择函数。如果要一次添加多个功能,请使用多选。所有选定的功能都添加了所选的保护选项。
选项
编译类型——选择对象的编译方式。选择一种适当的方法来保护每个对象(过程、函数、代码片段)免受检查和黑客攻击,可以在代码的性能和安全性之间实现最佳平衡。VMProtect 允许开发人员为每个受保护对象设置以下编译类型:
- 突变。可执行代码在 CPU 命令级别进行修改——现有命令发生变异,添加各种“垃圾”命令等。这种类型的编译在保护代码免受黑客攻击或分析方面相对较弱。其主要目的是防止使用自动签名分析器(PEiD+KANAL、IDA+FLIRT 等)检测已处理的函数。这种类型的编译值得保护库函数,因为它们通常不需要针对破解和分析的强大保护。因此,修改签名就足以让潜在的黑客无法自动检测应用程序中使用的特定库。突变提供低级别的保护和分析,但代码执行的性能很高。
- 虚拟化。可执行代码被翻译成在虚拟机上执行的字节码。这种编译类型应该应用于代码的所有关键部分,这些代码既需要严格的黑客攻击和分析对策,又需要高性能。虚拟化提供一般的黑客攻击和分析保护以及一般的执行速度。
- 超(变异+虚拟化)。可执行代码在处理器指令级别发生变异,然后转换为在虚拟机上执行的字节码。当执行速度不重要时,应将这种类型的编译应用于所有代码片段。超保护提供高保护并且执行缓慢。
- 锁定到序列号。如果启用此选项,则受保护的功能在没有输入有效序列号的情况下变得不可用。通过这种方式,您可以限制对未注册版本中应用程序某些功能的访问。
搜索
您可以使用快速搜索框按名称查找所需的对象:
>添加文件夹
您可以使用下拉菜单将文件夹添加到项目中,文件夹对受保护对象进行分组,并允许一次更改文件夹中所有对象的保护参数(排除编译,编译类型)。
>编辑对象
窗口右侧显示所选对象的内容。如果在项目树中选择了受保护的对象,则右侧部分显示该对象的反汇编表示:
右键单击一行代码会弹出上下文菜单:
- 外部地址——将所选地址添加到外部地址列表;
- End of function——限制在编译期间应该处理的命令列表;
如果在项目树中选择了一个文件夹,右侧会显示该文件夹中的函数列表:
您可以通过简单的拖放操作将功能移入和移出文件夹。
以上便是本篇文章的分享,有感兴趣的小伙伴,可以私我了解~