提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:李显亮|2019-08-13 15:25:40.480|阅读 608 次
概述:除了脚本语言的类方法和属性之外,VMProtect还为用户提供了执行基本操作的各种函数。一般的系统功能包括处理字符串、日期和数字、处理应用程序的命令行和显示消息;和专门的功能,本文将介绍内置功能中的字符串。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
VMProtect是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。
本文继续对VMProtect中强大的内置脚本的使用进行介绍,希望对您有所帮助。
VMProtect具有内置的强大脚本语言LUA,极大地增强了VMProtect在每个保护阶段的默认保护功能。LUA语法非常类似于JavaScript,但与之不同的是,LUA不包含显式类。不过,脚本语言允许轻松地实现类、继承和事件等面向对象的编程机制。
对于如何使用脚本语言,可以进行以下三类的介绍:
第二部分:内置功能
除了脚本语言的类方法和属性之外,VMProtect还为用户提供了执行基本操作的各种函数。一般的系统功能包括处理字符串、日期和数字、处理应用程序的命令行和显示消息;和专门的功能,以配合VMProtect的核心和水印:
字符串
该库提供了字符串操作的通用函数,例如查找和提取子字符串以及模式匹配。 在Lua中索引字符串时,第一个字符位于位置1(而不是0,如在C中)。 允许指数为负数,并从字符串末尾解释为向后索引。 因此,最后一个字符位于-1,依此类推。
字符串库在表字符串中提供其所有函数。 它还为字符串设置元表,其中__index字段指向字符串表。 因此,您可以在面向对象的样式中使用字符串函数。 例如,string.byte(s,i)可以写成s:byte(i)。
string.byte (s [, i [, j]])
返回字符s [i],s [i + 1],...,s [j]的内部数字代码。 i的默认值为1; j的默认值是i。 这些索引遵循相同的函数规则来更正。字符串数字代码不一定是跨平台可移植的。
string.char (···)
接收零个或多个整数。 返回一个长度等于参数个数的字符串,其中每个字符的内部数字代码等于其对应的参数。数字代码不一定是跨平台可移植的。
string.dump (function)
返回一个字符串,该字符串包含给定函数的二进制表示形式,因此稍后对该字符串的加载将返回函数的副本。
string.find (s, pattern [, init [, plain]])
在字符串s中查找pattern的第一个匹配项。 如果找到匹配,则find返回此事件开始和结束的s的索引; 否则,它返回零。 第三个可选的数字参数init指定从哪里开始搜索; 它的默认值是1,可以是负数。 值为true,作为第四个,可选参数plain关闭模式匹配工具,因此该函数执行简单的“查找子串”操作,模式中的字符不被视为魔术。 注意,如果给出了plain,那么也必须给出init。如果模式具有捕获,则在成功匹配中,在两个索引之后也返回捕获的值。
string.format (formatstring, ···)
返回其可变数量的参数的格式化版本,遵循其第一个参数(必须是字符串)中给出的描述。 格式字符串遵循与ISO C函数sprintf相同的规则。 唯一的区别是不支持选项/修饰符*,h,L,l,n和p,并且有一个额外的选项q。 q选项在双引号之间格式化一个字符串,必要时使用转义序列以确保Lua解释器可以安全地读回它。例如:
string.format('%q', 'a string with "quotes" and \n new line')
string.gmatch (s, pattern)
返回一个迭代器函数,每次调用它时,都会返回字符串s上的模式的下一个捕获。 如果pattern指定没有捕获,则在每次调用中生成整个匹配。例如,以下循环将遍历字符串s中的所有单词,每行打印一个:
s = "hello world from Lua" for w in string.gmatch(s, "%a+") do print(w) end
下一个例子将给定字符串中的所有对key=value收集到一个表中:
t = {} s = "from=world, to=Lua" for k, v in string.gmatch(s, "(%w+)=(%w+)") do t[k] = v end
string.gsub (s, pattern, repl [, n])
返回s的副本,其中模式的所有(或前n个,如果给定的)出现已被repl指定的替换字符串替换,该替换字符串可以是字符串,表或函数。 gsub还返回第二个值,即发生的匹配总数。
下面是一个示例:
x = string.gsub("hello world", "(%w+)", "%1 %1") --> x="hello hello world world" x = string.gsub("hello world", "%w+", "%0 %0", 1) --> x="hello hello world" x = string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1") --> x="world hello Lua from" x = string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv) --> x="home = /home/roberto, user = roberto" x = string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function (s) return load(s)() end) --> x="4+5 = 9" local t = {name="lua", version="5.2"} x = string.gsub("$name-$version.tar.gz", "%$(%w+)", t) --> x="lua-5.2.tar.gz"
string.len (s)
接收一个字符串并返回其长度。 空字符串“”的长度为0.嵌入的零计数,因此“a \ 000bc \ 000”的长度为5。
string.lower (s)
接收一个字符串并返回此字符串的副本,所有大写字母都更改为小写。 所有其他字符保持不变。 大写字母的定义取决于当前的语言环境。
string.match (s, pattern [, init])
在字符串s中查找pattern的第一个匹配项。 如果找到一个,则匹配返回模式中的捕获;否则它返回零。 如果pattern指定没有捕获,则返回整个匹配。
string.rep (s, n [, sep])
返回一个字符串,该字符串是由字符串sep分隔的字符串s的n个副本的串联。 sep的默认值是空字符串(即没有分隔符)。
string.reverse (s)
返回一个与字符串s相反的字符串。
string.sub (s, i [, j])
返回从i开始并继续直到j的s的子字符串; 我和j可以是负面的。 如果j不存在,则假定它等于-1(与字符串长度相同)。 特别是,调用string.sub(s,1,j)返回长度为j的s前缀,string.sub(s,-i)返回长度为i的后缀s。
如果在负指数的平移之后,i小于1,则将其校正为1.如果j大于字符串长度,则将其校正为该长度。 如果在这些更正之后,i大于j,则该函数返回空字符串。
string.upper (s)
接收一个字符串并返回此字符串的副本,并将所有小写字母更改为大写。 所有其他字符保持不变。 小写字母的定义取决于当前的语言环境。
- 持续更新中 -
VMProtect正版授权专享在线订购特享超低价格!还不赶紧加入你的订购清单?>>更多详情可点击咨询购买
扫描关注“慧聚IT”微信公众号,及时获取最新动态及最新资讯
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢