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

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

【下载VMProtect最新试用版】https://www.evget.com/product/1859/download

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

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

  • 内置功能
  • 事件

第二部分:内置功能

除了脚本语言的类方法和属性之外,VMProtect还为用户提供了执行基本操作的各种函数。一般的系统功能包括处理字符串、日期和数字、处理应用程序的命令行和显示消息;和专门的功能,以配合VMProtect的核心和水印:

  • 字符串
  • 表格
  • 运算
  • bit32
  • IO
  • OS
  • 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+") doprint(w)end

下一个例子将给定字符串中的所有对key=value收集到一个表中:

  t = {}s = "from=world, to=Lua"for k, v in string.gmatch(s, "(%w+)=(%w+)") dot[k] = vend

string.gsub (s, pattern, repl [, n])

返回s的副本,其中模式的所有(或前n个,如果给定的)出现已被repl指定的替换字符串替换,该替换字符串可以是字符串,表或函数。 gsub还返回第二个值,即发生的匹配总数。

  • 如果repl是字符串,则其值用于替换。 字符%用作转义字符:%d形式的repl中的任何序列,d在1和9之间,代表第d个捕获的子字符串的值。 序列%0代表整个匹配。 序列%%代表单个%。
  • 如果repl是一个表,则使用第一个捕获作为键来查询每个匹配的表。
  • 如果repl是一个函数,那么每次匹配发生时都会调用此函数,并按顺序将所有捕获的子字符串作为参数传递。
  • 如果表查询或函数调用返回的值是字符串或数字,则将其用作替换字符串; 否则,如果它是假或零,则没有替换。

下面是一个示例:

  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用户手册之内置功能(1)——字符串功能作用相关推荐

  1. 代码保护软件VMProtect用户手册之内置脚本的使用(2)——PE文件

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

  2. 代码保护软件 VMProtect 用户手册:分析,破解和保护软件

    是一款虚拟机保护软件,是目前最为流行的保护壳之一.VMProtect将保护后的代码放到虚拟机中运行, 这将使分析反编译后的代码和破解变得极为困难.除了代码保护,VMProtect 还可以生成和验证序列 ...

  3. 代码保护软件VMProtect用户手册主窗口之主菜单

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

  4. 代码保护软件 VMProtect 用户手册: 保护应用程序的三大要素

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

  5. 代码保护软件VMProtect用户手册主窗口之控制面板“项目”部分(4)

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

  6. 代码保护软件 VMProtect 用户手册之使用VMProtect: 准备项目

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

  7. 代码保护软件 VMProtect 用户手册之准备项目: 使用标记

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

  8. 代码保护软件 VMProtect 3.3已将Taggant System移除

    VMProtect通过在具有非标准体系结构的虚拟机上执行代码来保护代码,这将使分析和破解软件变得十分困难.除此之外,VMProtect还可以生成和验证序列号,限制免费升级等等. 本篇文章主要是想告知大 ...

  9. 代码加密软件VMProtect 全新v3.6震撼上线,强势助力软件加密

    VMProtect 是一款性能强悍且无需任何解密代码的实力派软件保护解决方案! VMProtect 从发行以来,因其虚拟化代码,无需解码.支持几乎所有可执行文件格式及Windows等特点,深受开发者信 ...

最新文章

  1. vs2015 Preprocessor
  2. linux中的fork函数详解
  3. zookeper安装_ZooKeeper安装和配置
  4. jfinal框架批量导出数据到Excel
  5. ios 上传图片失败 小程序_iOS上传图片,就是有这种不一样的操作!
  6. 杭州招聘计算机专业毕业生,毕业季必看!杭州高校毕业生就业情况:这些专业最吃香!这个岗位最缺人!...
  7. 以V神为灵感创作的加密艺术NFT“EthBoy”以260ETH高价售出
  8. 创建数据库、表以及索引
  9. JS学习总结(10)——Windows对象
  10. HDU 2017 一系列统计数据
  11. 简单使用mybatis(idea中使用)
  12. java 浏览器设置字体大小_css 字体设置(不同浏览器设置效果)
  13. 英文书籍下载网站统计(进行中)
  14. H5页面设计器,仿有赞商城页面在线设计器,比富文本框更友好的内容编辑器...
  15. android o壁纸,超实用壁纸应用大合集 - 你想要的壁纸在这里统统都能找到! - Android 应用 - 【最美应用】...
  16. 南京大学计算机专业复试面试,2014 CS复试全面回忆 上机真题 面试血泪史
  17. 15136-34-2,Cyclo(Leu-Trp),c(Leu-Trp),cyclo-L-Trp-L-Leu
  18. Oracle数据库配置
  19. impala 基础知识及使用
  20. c++调用sanp7和西门子通信demo

热门文章

  1. Scrapy爬虫cookies设置的坑
  2. Flink安装与编程实践(Flink1.9.1)
  3. 苏州大学计算机学院保研条件,2018年苏州大学保研推免接收办法
  4. 武汉计算机985211大学有哪些,武汉985211大学有哪些
  5. 汉字转拼音 python_python把汉字转换成拼音实现程序
  6. T3179,T1372,T1371,T2065
  7. 传统机器学习之逻辑回归的分类预测,以威斯康辛州乳腺癌数据集为例
  8. ReentrantLock之lock()方法
  9. 小程序动画效果 -- 自下往上弹起
  10. Vue3+Vite+TS独立开发仿网易云音乐Web应用