主页 » 支持 » 用户手册 » 使用 VMProtect » 主窗口 » “工程” 部分 » “需保护的函数” 部分

“需保护的函数” 部分

这一部分是用来选择哪些函数必须被保护。

添加函数

要向工程添加新对象,请单击工具栏上的 “添加函数” 按钮,或在上下文菜单中选择相应的工程:

出现一个添加新函数的对话框。

指定函数的地址,或者开始在快速搜索框中输入函数的名称,直接从 "函数 "标签的列表中选择函数。如果您想同时添加几个函数,请使用多选。所有被选中的函数都会以所选择的保护选项被添加。

选项

  • 编译类型 - 选择对象的编译方式。选择一种适当的方式来保护每个对象(过程、函数、代码片段)免受检查和破解者攻击,从而在代码的性能和安全之间取得最佳平衡。VMProtect 允许开发者为每个受保护的对象设置以下编译类型。
    • 变异: 可执行代码在CPU命令层面上被修改 - 现有的命令被变异,各种 "垃圾 "命令被添加等等。这种类型的编译在保护代码免受破解者攻击或分析方面相对较弱。它的主要目的是防止自动签名分析器(PEiD+KANAL, IDA+FLIRT等)检测到被处理的函数。这种类型的编译对于保护库函数是值得的,因为它们通常不需要强大的保护来防止破解和分析。因此,修改签名就足够了,这样潜在的破解者就不能自动检测到应用程序中使用的特定库。变异提供了低水平的保护和分析,但代码执行的性能很高。
    • 虚拟: 可执行代码被翻译成在虚拟机上执行的字节码。这种编译类型应该应用于所有需要严重的破解者攻击和分析对策以及高性能的代码的关键部分。虚拟化提供了平均的破解者和分析保护以及平均的执行速度。
    • 超级(变异 +虚拟): 可执行代码在处理器指令层面被变异,然后被翻译成虚拟机上执行的字节码。当执行速度不是很关键时,这种类型的编译应适用于所有的代码片段。超保护提供高保护,执行速度较慢。
  • 锁定到序列号 - 如果启用了此选项,如果没有输入有效的序列号,被保护的函数将不可用。通过这种方式,您可以在未注册的版本中限制对应用程序的某些函数的访问。

您可以使用快速搜索框,通过其名称找到您需要的对象。

您可以在搜索框中使用以下通配符号:

  • * - 代替任何数量的符号;
  • ? - 代替一个符号。

添加一个文件夹

您可以使用右键菜单在工程中添加一个文件夹:

文件夹将受保护的对象分组,并允许一次性改变文件夹中所有对象的保护参数(排除编译、编译类型)。

输入新文件夹的名称:

编辑对象

窗口的右侧显示所选对象的内容。如果在工程树中选择了一个受保护的对象,右边部分会显示这个对象的反汇编情况:

Code

右键点击一行代码会出现右键菜单:

  • 外部地址 - 将选择的地址添加到 外部地址 列表中;
  • 函数结束 - 限制编译时应处理的命令列表;

如果在工程树中选择了一个文件夹,右侧会显示该文件夹中的函数列表:

您可以通过简单的拖放操作将函数移入或移出文件夹。