對于游戲開發人員,有時候希望從一些游戲apk中反編譯出源代碼,進行學習,但是如果你觸碰到法律邊緣,那么你要非常小心。
這篇文章,我針對一些用lua寫客戶端或者服務器的編譯過的luac文件進行反編譯,獲取其源代碼的過程。
這里我不贅述如何反編譯解壓apk包的過程了,只說重點,在解壓獲取luac文件后,你應該是可以看到類似于這樣的目錄:
這些文件是經過lua或者luajit編譯后生成的字節碼文件(后邊我們會分析下它到底是經過lua還是luajit處理的)
我們需要知道的是lua手游有三種文件:lua,luac,luajit。
lua是明文代碼,直接用記事本就能打開。
luac是lua編譯后的字節碼。
luajit是用的另一種對lua加密。
Luac文件格式
一個luac文件包含兩部分:文件頭和函數體
文件頭格式
typedef struct {
char signature[4]; //".lua"
uchar version;
uchar format;
uchar endian;
uchar size_int;
uchar size_size_t;
uchar size_Instruction;
uchar size_lua_Number;
uchar lua_num_valid;
uchar luac_tail[0x6];
} GlobalH