cocos2d-luajit文件還原

最近對一款遊戲的lua腳本提取,發現提取出來的腳本都是LJ格式的文件。如圖:

4121383-4e66daf58910774e

image

 

在網上找了好幾個工具都沒什麼用,最後在github找到了luajit-decomp-master,還原出來的僞代碼基本能看懂,但是還是有殘缺。如果不明確的邏輯和數據還是要結合ida動態調試。

可以看看效果原lua源碼

function iter (a, i)
 i = i + 1
  local v = a[i]
    if v then
      return i, v
    end
end
function ipairs (a)
    return iter, a, 0
end

經過luajit編譯後的文件用16進制查看。

4121383-ef61d9f0beb981a9

image

 

然後經過我們的luajit-decomp 解析後的結果

function randomFunction iter (INPUT_VAR_0_,INPUT_VAR_1_)
var_0_1 = INPUT_VAR_1_ +  1 --var_0_1 NUMBER-NUMBER
if unknown0 then
--jump to 0008 (if previous if statement is false) --0008 JMP-JMP
var_0_3 = var_0_1
var_0_4 = unknown0
return var_0_3, var_0_4
end
return
end
function randomFunction ipairs (INPUT_VAR_0_)
var_1_2 = INPUT_VAR_0_
var_1_3 = 0 --var_1_3 NUMBER-NUMBER
return iter, var_1_2, var_1_3
end
function someFunc2()
local randomFunction0 = function() end -- starts at  test.lua:0
iter = randomFunction0
local randomFunction1 = function() end -- starts at  test.lua:0
ipairs = randomFunction1
return
end

luajit-decomp的使用方法:
1.需要LuaJIT-2.1.0-beta2編譯成功,編譯的資料很多可以查查,我是直接用目錄下的msvcbuild.bat編譯出來的。
2.把LuaJIT-2.1.0-beta2目錄下的jit文件,luajit.exe,lua51.dll,3個文件複製到luajit-decomp-master目錄下。
3.把要解析的目標文件改爲test,例如:test.lua。也可以修改decoder_new.au3裏面的內容自定義文件名。
4.運行目錄下的decoder_new.exe,產生一個分析結果文件out.lua可以直接打開查看。

luajit-decomp目錄下有decoder.exe,decoder_new.exe兩個可執行文件,我覺得decoder_new.exe解析出來的結果更接近源碼。
下載:
luajit-decomp:https://github.com/bobsayshilol/luajit-decomp
luajit:http://luajit.org/download/LuaJIT-2.1.0-beta2.zip

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章