提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|其它|编辑:李显亮|2019-07-22 09:57:50.877|阅读 433 次
概述:VMProtect中内置的脚本语言LUA是面向对象的:它在语法,意识形态和实现方面与JavaScript非常相似。脚本语言包括提供基本功能的标准类和提供对应用程序保护功能的访问的专用类。本文接着介绍VMProtect中强大的内置脚本的使用。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
VMProtect是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。
本文继续对VMProtect中强大的内置脚本的使用进行介绍,希望对您有所帮助。
VMProtect具有内置的强大脚本语言LUA,极大地增强了VMProtect在每个保护阶段的默认保护功能。LUA语法非常类似于JavaScript,但与之不同的是,LUA不包含显式类。不过,脚本语言允许轻松地实现类、继承和事件等面向对象的编程机制。
对于如何使用脚本语言,可以进行以下三类的介绍:
第一部分:类
VMProtect中内置的脚本语言LUA是面向对象的:它在语法,意识形态和实现方面与JavaScript非常相似。脚本语言包括提供基本功能的标准类和提供对应用程序保护功能的访问的专用类。
▲文件夹
使用自定义文件夹的类:
class Folders { public: int count(); //返回列表中文件夹的数量 Folder item(int index); //返回具有给定索引的文件夹 Folder add(string name);//添加一个新文件夹 void clear(); //清除列表 };
:使用自定义文件夹的类:
class Folder { public: int count(); //返回子文件夹的数量 Folder item(int index); //返回具有给定索引的子文件夹 Folder add(string name);//添加一个新的子文件夹 string name(); //返回文件夹的名称 void clear(); //清除子文件夹列表 void destroy(); //销毁所有子文件夹中的文件夹 };
▲PE文件
使用PE格式的常量:
enum PEFormat { //目录条目 IMAGE_DIRECTORY_ENTRY_EXPORT, IMAGE_DIRECTORY_ENTRY_IMPORT, IMAGE_DIRECTORY_ENTRY_RESOURCE, IMAGE_DIRECTORY_ENTRY_EXCEPTION, IMAGE_DIRECTORY_ENTRY_SECURITY, IMAGE_DIRECTORY_ENTRY_BASERELOC, IMAGE_DIRECTORY_ENTRY_DEBUG, IMAGE_DIRECTORY_ENTRY_ARCHITECTURE, IMAGE_DIRECTORY_ENTRY_TLS, IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG, IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT, IMAGE_DIRECTORY_ENTRY_IAT, IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT, IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR, //部分特征 IMAGE_SCN_CNT_CODE, IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_CNT_UNINITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE, IMAGE_SCN_MEM_NOT_CACHED, IMAGE_SCN_MEM_NOT_PAGED, IMAGE_SCN_MEM_SHARED, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE, //资源类型 RT_CURSOR, RT_BITMAP, RT_ICON, RT_MENU, RT_DIALOG, RT_STRING, RT_FONTDIR, RT_FONT, RT_ACCELERATOR, RT_RCDATA, RT_MESSAGETABLE, RT_GROUP_CURSOR, RT_GROUP_ICON, RT_VERSION, RT_DLGINCLUDE, RT_PLUGPLAY, RT_VXD, RT_ANICURSOR, RT_ANIICON, RT_HTML, RT_MANIFEST, RT_DLGINIT, RT_TOOLBAR };
处理PE文件的类:
public: string name(); //返回文件名 string format(); //返回“PE”格式名称 uint64 size(); //返回文件的大小 int count(); //返回列表中的体系结构数量 PEArchitecture item(int index); //返回具有给定索引的体系结构 uint64 seek(uint64 offset); //设置文件位置 uint64 tell(); //返回文件位置 int write(string buffer); //记录文件的缓冲区 };
一个使用PE架构的类:
class PEArchitecture { public: string name(); //返回体系结构的名称 PEFile file(); //返回父文件 uint64 entryPoint(); //返回起始地址 uint64 imageBase(); // returns the base offset OperandSize cpuAddressSize(); //返回基偏移量 uint64 size(); //返回体系结构的位计数 PESegments segments(); //返回架构的大小 PESections sections(); //返回段列表 PEDirectories directories(); //返回节的列表 PEImports imports(); //返回目录列表 PEExports exports(); //返回导入库的列表 PEResources resources(); //返回导出函数的列表 PEFixups fixups(); //返回资源列表 MapFunctions mapFunctions(); //返回重置(修复)列表 IntelFunctions functions(); //返回可用于保护的函数列表 bool addressSeek(uint64 address); //返回受保护函数的列表 uint64 seek(uint64 offset); //设置文件位置 uint64 tell(); //返回文件位置 int write(string buffer); //将缓冲区写入文件 };
一个与PE架构段一起工作的类:
class PESegment { public: uint64 address(); //返回段的地址 string name(); //返回段的名称 uint64 size(); //返回段的大小 int physicalOffset(); //返回段的文件位置(偏移量) int physicalSize(); //返回段的文件大小 int flags(); //返回段的标志 bool excludedFromPacking(); //返回“排除包装”属性 void setName(string name); //设置段的名称 };
一个处理PE架构部分列表的类:
class PESections { public: PESection item(int index); //返回具有给定索引的节 int count(); //返回列表中的节数 PESection itemByAddress(uint64 address); //返回给定地址的部分 };
与PE架构部分一起工作的类:
class PESection { public: uint64 address(); //返回该节的地址 string name(); //返回该节的名称 uint64 size(); //返回该节的大小 int offset(); //返回该节的文件位置 PESegment segment(); //返回父段 };
与PE体系结构目录一起使用的类:
class PEDirectories { public: PEDirectory item(int index); //返回具有给定索引的目录 int count(); //返回列表中的目录数 PEDirectory itemByType(int type); //返回给定类型的目录 };
一个使用PE架构目录的类:
class PEDirectory { public: uint64 address(); //返回目录的地址 string name(); //返回目录名 uint64 size(); //返回目录的大小 int type(); //返回目录的类型 void setAddress(uint64 address); //设置目录的地址 void setSize(int size); //设置目录的大小 void clear(); //清除目录的地址和大小 };
用于PE体系结构的导入库列表的类:
class PEImports { public: PEImport item(int index); //返回具有给定索引的库 int count(); //返回列表中库的数量 PEImport itemByName(string name); //返回具有给定名称的库 };
用于PE架构的导入库的类:
class PEImport { public: string name(); //返回库的名称 PEImportFunction item(int index); //返回带有给定索引的导入函数 int count(); //返回导入函数的数量 void setName(string name); //设置库的名称 };
使用PE架构导入函数的类:
class PEImportFunction { public: uint64 address(); //返回存储导入函数地址的内存地址 string name(); //返回导入函数的名称 };
用于PE体系结构的导出函数列表的类:
class PEExports { public: string name(); //返回库的名称 PEExport item(int index); //返回具有给定索引的导出函数 int count(); //返回列表中导出函数的数量 void clear(); //清除列表 PEExport itemByAddress(uint64 address); //返回指定地址的导出函数 PEExport itemByName(string name); //返回具有给定名称的导出函数 };
一个带有PE架构导出功能的wotk类:
class PEExports { public: class PEExport { public: uint64 address(); //返回导出函数的地址 string name(); //返回导出函数的名称 int ordinal(); //返回导出函数的序号 string forwardedName(); //返回导出函数转发给的函数的名称 void destroy(); //销毁导出的函数 };
一个处理PE架构资源列表的类:
class PEResources { public: PEResource item(int index); //返回具有给定索引的资源 int count(); //返回列表中的资源数量 void clear(); //清除列表 PEResource itemByType(int type); //返回给定类型的资源 PEResource itemByName(string name); //返回具有给定名称的资源 };
一个使用PE架构资源的类:
class PEResource { public: PEResource item(int index); //返回具有给定索引的资源 int count(); //返回列表中的资源数量 void clear(); //清除列表 uint64 address(); //返回资源的地址 int size(); //返回资源的大小 string name(); //返回资源的名称 int type(); //返回资源的类型 bool isDirectory(); //返回“Directory”属性 void destroy(); //销毁资源 PEResource itemByName(string name); //返回具有给定名称的资源 bool excludedFromPacking(); //返回“排除包装”属性 };
处理PE架构修复(重定位)列表的类:
class PEFixups { public: PEFixup item(int index); //返回具有给定索引的元素 int count(); //返回列表中的元素数量 PEFixup itemByAddress(uint64 address); //返回给定地址的元素 };
使用PE架构修复(重新定位)的类:
class PEFixup { public: uint64 address(); //返回元素的地址 };
- 持续更新中 -
VMProtect正版授权专享在线订购特享超低价格!还不赶紧加入你的订购清单?>>更多详情可点击咨询购买
扫描关注“慧聚IT”微信公众号,及时获取最新动态及最新资讯
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢