1. 程式人生 > >用luac給lua指令碼加密

用luac給lua指令碼加密

專案要求對lua指令碼進行加密,查了一下相關的資料 ,得知lua本身可以使用luac將指令碼編譯為位元組碼(bytecode)從而實現加密,試了一下,確實可行。
下面是使用原生的lua直譯器編譯位元組碼:
1、新建一個名為1.lua的檔案,裡面只有一句話print("Hello Lua"),新建一個空的out.lua指令碼檔案
2、開始--執行--cmd
3、luac -o out.lua 1.lua
注: luac -o [編譯後腳本名] [指令碼名],必要時帶上指令碼路徑,如:

 

回車之後,再開啟out.lua就可以看到編譯好的位元組碼了(十六進位制)

 

然後實驗一下,執行這個位元組碼指令碼,可以看到lua原生的直譯器可以直接解析luac編譯出來的bytecode指令碼,很方便!

注意:這種加密是可以逆向的,可以使用unluac等開源專案/工具反編譯回lua原始碼 

 逆向工具下載:

逆向方法:

需要安裝java環境
執行cmd,切換到unluac.jar的目錄
輸入java -jar unluac.jar 原始檔路徑(如果是和unluac.jar在同一目錄可以只輸入檔名)>目標檔案路徑
例如:java -jar unluac.jar d:\testin.lua>d:\testout.lua
原始檔和目標檔案和unluac.jar在同一目錄的話: java -jar unluac.jar testin.lua>testout.lua
反編譯的檔案可以直接用文字編輯器修改

逆向結果: