VMProtect是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。
VMProtect(点击下载)具有内置的强大脚本语言LUA,极大地增强了VMProtect在每个保护阶段的默认保护功能。LUA语法非常类似于JavaScript,但与之不同的是,LUA不包含显式类。不过,脚本语言允许轻松地实现类、继承和事件等面向对象的编程机制。
对于如何使用脚本语言,可以进行以下三类的介绍:
- 类
- 内置功能
- 事件
核心处理的事件设置
内置脚本语言是使用VMProtect自动创建受保护应用程序的有效方法。在VMProtect核心处理的某些事件中,将调用构建受保护文件的各个阶段所需的过程和函数,可以按以下顺序为VMProtect核心调用的5个事件设置自己的处理程序:
- OnBeforeCompilation
- OnBeforeSaveFile
- OnBeforePackFile
- OnAfterSaveFile
- OnAfterCompilation
创建保护对象列表时,将调用下述事件。在OnBeforeCompilation处理程序中,可以向项目添加新过程,或修改或删除现有过程。
function OnBeforeCompilation() end
在将编译期间创建的所有对象写入输出文件之前调用下述事件。在OnBeforeSaveFile事件处理程序中,您可以更改自动写入输出文件的文件及其属性(例如资源列表,导出函数列表,节名称等)。
function OnBeforeSaveFile() end
在打包应用程序的受保护文件之前调用下述事件。使用OnBeforePackFile,您可以修改要打包的文件。 仅在启用“包输出文件”选项时调用此事件。
function OnBeforePackFile() end
将编译期间创建的所有对象写入输出文件后调用下述事件。事件处理程序可以将新数据添加到输出文件或更改以前写入的数据。
function OnAfterSaveFile() end
在编译项目的所有对象后调用下述事件。在此阶段,用户可以访问已编译的项目,并可以使用它执行任何操作,例如添加数字签名(证书)。
function OnAfterCompilation() end