Lua/luac -加密/打包-& gt;數據文件
數據文件-解包/解密->;Lua/luac-& gt;Lua虛擬機
1.跟蹤、脫殼、解包和解密以獲得luac。
追Lual _ LoadBufferLual _ LoadFile Lua _ Load應該能找到解密函數。
Hook,這三個函數,導出解密後的數據,直接就是壹個luac文件。如果妳連lua源文件都不編譯。
鉤子luaV_execute可以得到Proto*,嘗試用luaU_dump導出。LuaD_precall應該是不必要的。
2.非標準luac處理
我們有兩個解決方案來處理luac。
1.得到壹個可以執行上述非標準luac的lua版本。
找出編譯方法,更改lua源文件,編譯壹個,想怎麽做就怎麽做,編譯對應的luadec。
如果能找到lua51.dll什麽的,直接調用就行了。但是,它只能用於導出luac比較文件格式,或者執行找到的幾個關鍵函數。
2.將非標準luac轉換成標準格式luac,俗話說:山不來我就去山。
非標準的luac是怎麽做到的?
1.錯誤的標題更改文件標題
#定義lua.h簽名" \033Lua" // lua.h
2.錯誤的頭改變了數據類型。
// luaconf.h
#定義LUA數字雙精度
#定義LUA _數字雙精度
LUA _要浮動的數字
LUA號碼掃描到“%f”
LUA _號碼_FMT到“%.7g”
l_mathop(x)到(x##f)
lua_str2number使用strtof
3.錯誤的代碼操作碼重定義
//其中“順序OP”被更改。
/* grep "ORDER OP "如果您更改這些枚舉*/
枚舉操作碼;// lopcodes.h
const Lu _ byte luaP _ op modes[];// lopcodes.c
const char * const luaP _ op names[];// lopcodes.c