软件保护工具VMProtect用户手册之内置功能(2)——关于表的操作

发布于:2022-11-29 ⋅ 阅读:(308) ⋅ 点赞:(0)

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

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

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

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

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

  • 内置功能
  • 事件

第二部分:内置功能

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

  • 字符串
  • 表格
  • 运算
  • bit32
  • IO
  • OS
  • vmprotect

表操作

该库为表操作提供了通用函数,它在table表中提供所有函数。出于性能原因,这些函数执行的所有表访问都是原始的。

table.concat (list [, sep [, i [, j]]])

给定一个列表,其中所有元素都是字符串或数字,返回字符串list[i]..sep..list[i+1] ··· sep..list[j]。默认值为sep空字符串,默认i值为1,默认j值为is #list。如果i大于j,则返回空字符串。

table.insert (list, [pos,] value)

在列表中的位置pos处插入元素值,向上移动元素列表[pos],列出[pos + 1],...,列表[#list]。 pos的默认值是#list + 1,因此调用table.insert(t,x)在列表t的末尾插入x。

table.pack (···)

返回一个新表,其中所有参数都存储在键1,2等中,并且字段“n”包含参数总数。 请注意,结果表可能不是序列。

table.remove (list [, pos])

从列表中删除位置pos处的元素,返回已删除元素的值。 当pos是1和#list之间的整数时,它向下移动元素列表[pos + 1],列表[pos + 2],...,列表[#list]并删除元素列表[#list]; 当#list为0或#list + 1时,索引pos也可以为0; 在这些情况下,该函数删除元素列表[pos]。

pos的默认值是#list,因此调用table.remove(t)删除列表t的最后一个元素。

table.sort (list [, comp])

按列表[1]到列表[#list]对给定顺序中的元素进行排序。 如果给出了comp,那么它必须是一个接收两个列表元素的函数,并且当第一个元素必须在最后一个顺序中的第二个元素之前返回时返回true(所以不是comp(list [i + 1],list [i]) 在排序之后将是真实的)。 如果没有给出comp,则使用标准Lua运算符。

排序算法是不稳定的,也就是说,被给定顺序认为相等的元素可能会通过排序改变它们的相对位置。

table.unpack (list [, i [, j]])

返回给定表中的元素。 这个功能相当于

  return list[i], list[i+1], ···, list[j]

默认情况下,i为1,j为#list。

本文含有隐藏内容,请 开通VIP 后查看