1. 程式人生 > >cocos2d luajit對Lua指令碼編譯加密的批處理工具

cocos2d luajit對Lua指令碼編譯加密的批處理工具

       首先關於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程式碼修改的可能不是很好。如有錯漏與不足希望能夠批評指正。