• 代码保护软件VMProtect用户手册之内置脚本的使用(4)——关于功能的类


    VMProtect是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。

    本文继续对VMProtect中强大的内置脚本的使用进行介绍,希望对您有所帮助。

    【下载VMProtect最新试用版】icon-default.png?t=M85Bhttps://www.evget.com/product/1859/download

    VMProtect具有内置的强大脚本语言LUA,极大地增强了VMProtect在每个保护阶段的默认保护功能。LUA语法非常类似于JavaScript,但与之不同的是,LUA不包含显式类。不过,脚本语言允许轻松地实现类、继承和事件等面向对象的编程机制。

    对于如何使用脚本语言,可以进行以下三类的介绍:

    • 内置功能
    • 事件

    第一部分:类

    VMProtect中内置的脚本语言LUA是面向对象的:它在语法,意识形态和实现方面与JavaScript非常相似。脚本语言包括提供基本功能的标准类和提供对应用程序保护功能的访问的专用类。

    ▲功能

    用于处理函数列表的类:

    class MapFunctions {
    public:
    	MapFunction item(int index); // 返回具有给定索引的函数
    	int count(); // 返回列表中的函数数
    	MapFunction itemByAddress(uint64 address); //返回给定地址的函数
    	MapFunction itemByName(string name); //返回具有给定名称的函数
    };

    功能类型:

    enum ObjectType {
    	Unknown,
    	Code,
    	Data,
    	Export,
    	Marker,
    	APIMarker,
    	Import,
    	String
    };

    使用函数的类:

    class MapFunction {
    public:
    	uint64 address(); //返回函数的地址
    	string name(); // 返回函数名
    	ObjectType type(); // 返回函数的类型
    	References references(); // 返回引用列表
    };

    用于处理引用列表的类:

    class References {
    public:
    	Reference item(int index); // 返回具有给定索引的引用
    	int count(); // 返回列表中引用的数目
    };

    使用引用的类:

    class Reference {
    public:
    	uint64 address(); //返回命令的地址
    	uint64 operandAddress(); //返回引用的地址
    };
  • 相关阅读:
    MySQL锁(乐观锁、悲观锁、多粒度锁)
    K8s技术全景:架构、应用与优化
    MySQL数据库管理基本操作(一)
    代码无法输出操作值,如何解决?(语言-c语言)
    【第三部分 | 移动端开发】2:流式布局
    Rycky9.0安装k8s1.25.0+containerd
    第一个Three的demo实例
    HCIA实验(07)
    Linux用户管理
    eyb:职称管理页面设计到部门删除功能实现(三)
  • 原文地址:https://blog.csdn.net/m0_67129275/article/details/127120168