軟件保護工具VMProtect用戶手冊之內(nèi)置功能(2)——關(guān)于表的操作
VMProtect是一種很可靠的工具,可以保護應(yīng)用程序代碼免受分析和破解,但只有在應(yīng)用程序內(nèi)保護機制正確構(gòu)建且沒有可能破壞整個保護的嚴重錯誤的情況下,才能實現(xiàn)最好的效果。
本文繼續(xù)對VMProtect中強大的內(nèi)置腳本的使用進行介紹,希望對您有所幫助。
VMProtect具有內(nèi)置的強大腳本語言LUA,極大地增強了VMProtect在每個保護階段的默認保護功能。LUA語法非常類似于JavaScript,但與之不同的是,LUA不包含顯式類。不過,腳本語言允許輕松地實現(xiàn)類、繼承和事件等面向?qū)ο蟮木幊虣C制。
對于如何使用腳本語言,可以進行以下三類的介紹:
- 類
- 內(nèi)置功能
- 事件
第二部分:內(nèi)置功能
除了腳本語言的類方法和屬性之外,VMProtect還為用戶提供了執(zhí)行基本操作的各種函數(shù)。一般的系統(tǒng)功能包括處理字符串、日期和數(shù)字、處理應(yīng)用程序的命令行和顯示消息;和專門的功能,以配合VMProtect的核心和水印:
- 字符串
- 表格
- 運算
- bit32
- IO
- OS
- vmprotect
表操作
該庫為表操作提供了通用函數(shù),它在table表中提供所有函數(shù)。出于性能原因,這些函數(shù)執(zhí)行的所有表訪問都是原始的。
table.concat (list [, sep [, i [, j]]])
給定一個列表,其中所有元素都是字符串或數(shù)字,返回字符串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,因此調(diào)用table.insert(t,x)在列表t的末尾插入x。
table.pack (···)
返回一個新表,其中所有參數(shù)都存儲在鍵1,2等中,并且字段“n”包含參數(shù)總數(shù)。 請注意,結(jié)果表可能不是序列。
table.remove (list [, pos])
從列表中刪除位置pos處的元素,返回已刪除元素的值。 當(dāng)pos是1和#list之間的整數(shù)時,它向下移動元素列表[pos + 1],列表[pos + 2],...,列表[#list]并刪除元素列表[#list]; 當(dāng)#list為0或#list + 1時,索引pos也可以為0; 在這些情況下,該函數(shù)刪除元素列表[pos]。
pos的默認值是#list,因此調(diào)用table.remove(t)刪除列表t的最后一個元素。
table.sort (list [, comp])
按列表[1]到列表[#list]對給定順序中的元素進行排序。 如果給出了comp,那么它必須是一個接收兩個列表元素的函數(shù),并且當(dāng)?shù)谝粋€元素必須在最后一個順序中的第二個元素之前返回時返回true(所以不是comp(list [i + 1],list [i]) 在排序之后將是真實的)。 如果沒有給出comp,則使用標(biāo)準(zhǔn)Lua運算符。
排序算法是不穩(wěn)定的,也就是說,被給定順序認為相等的元素可能會通過排序改變它們的相對位置。
table.unpack (list [, i [, j]])
返回給定表中的元素。 這個功能相當(dāng)于
return list[i], list[i+1], ···, list[j]
默認情況下,i為1,j為#list。
- 持續(xù)更新中 -
VMProtect正版授權(quán)專享在線訂購特享超低價格!還不趕緊加入你的訂購清單?>>更多詳情可點擊咨詢購買
掃描關(guān)注“慧聚IT”微信公眾號,及時獲取最新動態(tài)及最新資訊
