cocos2d luajit對Lua指令碼編譯加密的批處理工具
阿新 • • 發佈:2019-01-10
首先關於luajit 在ios平臺下的使用問題:
總結起來就是使用luajit 2.10編譯位元組碼!
下面回到正題:
在專案中要對lua程式碼進行加密。在論壇上看到一個方法使用cocos2d引擎所包含的luajit對其進行編譯加密。
作者還提供了一個批處理工具實現快速的編譯。畢竟專案的lua檔案量是很大的,如果全手動的話費力不討好。但是這個批處理不是很滿足需求。不管原始碼的目錄結構如何。都是統一輸出到當前目錄的out資料夾下。結果是還是得手動的重新組織目錄結構。並且輸出目錄很死就是out
所以這裡對其進行一點改動實現能夠靈活指定輸出目錄,並且輸出後按照源目錄結構儲存。這樣除了拖動指定兩次目錄基本無需任何操作了。
這裡放上批處理命令檔案CompileToLuaBytecode.bat程式碼
@echo off if exist out rd /s /q out mkdir out setlocal enabledelayedexpansion cls :input set input=: set /p input= 拖入要編譯的lua資料夾: if "%input%"==":" goto input if not exist "%input%" goto input set "input=%input:"=%" :output set output=: set /p output= 拖入要編譯後輸出的目標資料夾: if "%output%"==":" goto output if not exist "%output%" goto output for %%i in ("%input%") do if /i "%%~di"==%%i goto input pushd %cd% cd /d "%input%">nul 2>nul || echo cmd was runing error set cur_dir=%cd% popd set /a num = 0 echo 正在目標資料夾中建立對應目錄結構: for /r %input% %%a in (*) do xcopy %%a %output% /t /s echo 建立完成,開始編譯lua程式碼: for /f "delims=" %%i in ('dir /b /a-d /s "%input%"') do (set /a num += 1 set pt=%%~fi & set "pt=!pt:%input%=%output%!" luajit -b %%~fi !pt! echo 編譯後: !pt!) echo 編譯指令碼數量:%num% ATTRIB %output%/*.* +R echo 編譯完成,開始刪除空白資料夾: for /f "delims=" %%i in ('dir /b /ad /s "%output%"') do (echo 刪除空白目錄資訊: %%i & rd %%i /q) pause
在luajit.exe的同級目錄下新建一個文字文件,將以上程式碼拷貝複製並修改後綴為.bat檔案即可。然後雙擊執行按提示拖入原始碼目錄與輸出目錄即可。
具體操作及注意事項可以看下面的說明
## ReadMe.md ### 檔案 :基於cocos2d-x 的 luajit 對lua程式碼進行批處理編譯成位元組碼以實現程式碼加密 ### 工具 :CompileLuaToBytecode.bat ### 作者 :長安長夜 ### 宣告 :本檔案及批處理命令供參考 CopyRight(c) Reserved All Rights ===================================================================== #### 使用指南 1. 啟動需求: 本批處理命令依賴於cocos2d引擎中所包含的luajit,請將其放置於引擎目錄下的luajit.exe的同級資料夾中 具體目錄為: cocos2d-x引擎\tools\cocos2d-console\plugins\plugin_luacompile\bin 2. 使用流程: 直接雙擊即可執行,執行後會提示你拖入lua原始碼資料夾,直接選中檔案拖入到cmd視窗中即可。然後回車繼續拖入生成的位元組碼目標存放目錄,之後回車等待即可本命令執行完成即可。 #### 注意 -- 本工具會刪除目標存放目錄的空白資料夾 -- 本工具需要明確指定輸入目錄和輸出目錄 -- 本工具會按照原始碼目錄結構存放編譯後的的檔案.並且資料夾名及生成的位元組碼檔名與源保持一致
dos程式碼修改的可能不是很好。如有錯漏與不足希望能夠批評指正。