高效反编译luac文件

        对于游戏开发人员,有时候希望从一些游戏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

猜你喜欢

转载自blog.csdn.net/pbymw8iwm/article/details/132311842