没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:李显亮|2019-07-29 10:25:26.990|阅读 407 次
概述:VMProtect中内置的脚本语言LUA是面向对象的:它在语法,意识形态和实现方面与JavaScript非常相似。脚本语言包括提供基本功能的标准类和提供对应用程序保护功能的访问的专用类。本文接着介绍VMProtect中强大的内置脚本的使用中的Mach-O文件。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
VMProtect是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。
本文继续对VMProtect中强大的内置脚本的使用进行介绍,希望对您有所帮助。
VMProtect具有内置的强大脚本语言LUA,极大地增强了VMProtect在每个保护阶段的默认保护功能。LUA语法非常类似于JavaScript,但与之不同的是,LUA不包含显式类。不过,脚本语言允许轻松地实现类、继承和事件等面向对象的编程机制。
对于如何使用脚本语言,可以进行以下三类的介绍:
第一部分:类
VMProtect中内置的脚本语言LUA是面向对象的:它在语法,意识形态和实现方面与JavaScript非常相似。脚本语言包括提供基本功能的标准类和提供对应用程序保护功能的访问的专用类。
▲Mach-O文件
使用Mach-O格式的常量:
enum MacFormat {
//Load命令类型
LC_SEGMENT,
LC_SYMTAB,
LC_SYMSEG,
LC_THREAD,
LC_UNIXTHREAD,
LC_LOADFVMLIB,
LC_IDFVMLIB,
LC_IDENT,
LC_FVMFILE,
LC_PREPAGE,
LC_DYSYMTAB,
LC_LOAD_DYLIB,
LC_ID_DYLIB,
LC_LOAD_DYLINKER,
LC_PREBOUND_DYLIB,
LC_ROUTINES,
LC_SUB_FRAMEWORK,
LC_SUB_UMBRELLA,
LC_SUB_CLIENT,
LC_SUB_LIBRARY,
LC_TWOLEVEL_HINTS,
LC_PREBIND_CKSUM,
LC_LOAD_WEAK_DYLIB,
LC_SEGMENT_64,
LC_ROUTINES_64,
LC_UUID,
LC_RPATH,
LC_CODE_SIGNATURE,
LC_SEGMENT_SPLIT_INFO,
LC_REEXPORT_DYLIB,
LC_LAZY_LOAD_DYLIB,
LC_ENCRYPTION_INFO,
LC_DYLD_INFO,
LC_DYLD_INFO_ONLY,
LC_LOAD_UPWARD_DYLIB,
LC_VERSION_MIN_MACOSX,
//段类型
SECTION_TYPE,
SECTION_ATTRIBUTES,
S_REGULAR,
S_ZEROFILL,
S_CSTRING_LITERALS,
S_4BYTE_LITERALS,
S_8BYTE_LITERALS,
S_LITERAL_POINTERS,
S_NON_LAZY_SYMBOL_POINTERS,
S_LAZY_SYMBOL_POINTERS,
S_SYMBOL_STUBS,
S_MOD_INIT_FUNC_POINTERS,
S_MOD_TERM_FUNC_POINTERS,
S_COALESCED,
S_GB_ZEROFILL,
S_INTERPOSING,
S_16BYTE_LITERALS,
S_DTRACE_DOF,
S_LAZY_DYLIB_SYMBOL_POINTERS,
SECTION_ATTRIBUTES_USR,
S_ATTR_PURE_INSTRUCTIONS,
S_ATTR_NO_TOC,
S_ATTR_STRIP_STATIC_SYMS,
S_ATTR_NO_DEAD_STRIP,
S_ATTR_LIVE_SUPPORT,
S_ATTR_SELF_MODIFYING_CODE,
S_ATTR_DEBUG,
SECTION_ATTRIBUTES_SYS,
S_ATTR_SOME_INSTRUCTIONS,
S_ATTR_EXT_RELOC,
S_ATTR_LOC_RELOC
};一个使用Mach-O文件的类:
class MacFile {
public:
string name(); //返回文件
string format(); //返回“Mach-O”格式的
uint64 size(); //返回文件的大小
int count(); // 返回列表中的体系结构数量
MacArchitecture item(int index); //返回具有给定索引的体系结构
uint64 seek(uint64 offset); //设置文件位置
uint64 tell(); // 返回文件位置
int write(string buffer); // 向文件写入缓冲区
};一个使用Mach-O架构的类:
class MacArchitecture {
public:
string name(); //返回体系结构的名称
MacFile file(); //返回父文件
uint64 entryPoint(); //返回起始地址
OperandSize cpuAddressSize(); //返回体系结构的位计数
uint64 size(); //返回架构的大小
MacSegments segments(); //返回段列表
MacSections sections(); //返回节的列表
MacCommands commands(); //返回加载命令列表
MacSymbols symbols(); //返回符号列表
MacImports imports(); //返回导入库的列表
MacExports exports(); //返回导出函数的列表
MacFixups fixups(); //返回修复程序列表(重新定位)
MapFunctions mapFunctions(); //返回可用于保护的函数列表
IntelFunctions functions(); //返回受保护函数的列表
bool addressSeek(uint64 address); //设置文件位置
uint64 seek(uint64 offset); //设置文件位置
uint64 tell(); //返回文件位置
int write(string buffer); //向文件写入缓冲区
};一个使用Mach-O架构段列表的类:
class MacSegments {
public:
MacSegment item(int index); //返回具有给定索引的段
int count(); //返回列表中的段数
MacSegment itemByAddress(); //返回给定地址的段
};与Mach-O架构部分一起使用的类:
class MacSegment {
public:
uint64 address(); //返回段的地址
string name(); //返回段的名称
uint64 size(); //返回段的大小
int physicalOffset(); //返回段的文件位置
int physicalSize(); //返回段的文件大小
int flags(); //返回段的标志
bool excludedFromPacking(); //返回“排除包装”属性
};一个使用Mach-O架构部分列表的类:
class MacSections {
public:
MacSection item(int index); //返回具有给定索引的节
int count(); //返回列表中的节数
MacSection itemByAddress(uint64 address); //返回给定地址的部分
};使用Mach-O架构部分的类:
class MacSection {
public:
uint64 address(); //返回该节的地址
string name(); //返回该节的名称
uint64 size(); //返回该节的大小
int offset(); //返回该节的文件位置
MacSegment segment(); //返回父段
};一个使用Mach-O体系结构加载命令列表的类:
class MacCommands {
public:
MacCommand item(int index); //返回带有给定索引的命令
int count(); //返回列表中命令的数量
MacCommand itemByType(int type); //返回给定类型的命令
};使用Mach-O体系结构加载命令的类:
class MacCommand {
public:
uint64 address(); //返回命令的地址
int type(); //返回命令的类型
string name(); //返回命令名
int size(); //返回命令的大小
};一个使用Mach-O架构符号列表的类:
class MacSymbols {
public:
MacSymbol item(int index); //返回具有给定索引的符号
int count(); //返回列表中的符号数量
};用于处理Mach-O体系结构的导入库列表的类:
class MacImports {
public:
MacImport item(int index); //返回具有给定索引的导入库
int count(); //返回列表中导入的库的数量
MacImport itemByName(string name); //返回具有给定名称的导入库
};使用Mach-O架构导入库的类:
class MacImport {
public:
string name(); //返回导入库的名称
MacImportFunction item(int index); //返回带有给定索引的导入函数
int count(); //返回列表中导入函数的数量
void setName(string name); //设置导入库的名称
};一个用于处理Mach-O架构的导出函数列表的类:
class MacExports {
public:
string name(); //返回库的名称
MacExport item(); //返回具有给定索引的导出函数
int count(); //返回列表中导出函数的数量
void clear(); //清除列表
MacExport itemByAddress(uint64 address); //返回指定地址的导出函数
MacExport itemByName(string name); //返回具有给定名称的导出函数
};使用Mach-O架构导出函数的类:
class MacExport {
public:
uint64 address(); //返回导出函数的地址
string name(); //返回导出函数的名称
string forwardedName(); //返回被导出函数转发到的函数的名称
void destroy(); //销毁导出的函数
};一个用于处理Mach-O架构的修正(重定位)列表的类:
class MacFixups {
public:
MacFixup item(int index); //返回具有给定索引的元素
int count(); //返回列表中的元素数量
MacFixup itemByAddress(uint64 address); //返回给定地址的元素
};使用Mach-O架构修复的类:
class MacFixup {
public:
uint64 address(); //返回元素的地址
};- 持续更新中 -
VMProtect正版授权专享在线订购特享超低价格!还不赶紧加入你的订购清单?>>更多详情可点击咨询购买
扫描关注“慧聚IT”微信公众号,及时获取最新动态及最新资讯

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn




注意: Cogent DataHub 软件 v11 包含一些新功能,您的目标操作系统可能不支持这些功能。
本教程主要为大家介绍如何使用DevExpress WinForms数据网格控件进行数据排序的基础知识,欢迎下载最新版组件体验!
在使用Parasoft C/C++test执行BugDetective数据流分析时,可能会遇到用户自定义的资源API,那在这种情况下,若要判断是否存在资源问题,如资源泄露等,则需要手动配置测试配置。
大型SaaS系统的自动化测试常常受制于界面变化快、结构复杂、加载机制多变等因素。从元素识别到脚本管理,SmartBear TestComplete帮助Salesforce建了可靠的自动化测试体系。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@ke049m.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
半岛外围网上直营