使用ChunkSpy反编译Lua文件

ChunkSpy的工作原理是根据 luac编译之后的二进制文件格式进行解析 。查看解析文件,有助理解Lua编译机制。

具体的用法

首先,需要使用 luac编译生成二进制文件 :

1
luac test.lua

默认情况下,上面指令执行之后的结果是生成一个叫 luac.out的文件。 这就是Lua脚本文件编译之后的二进制文件,然后再使用ChunkSpy脚本进行反编译:

1
lua ChunkSpy .lua luac.out test.lua --brief

其中 test.lua是原始的脚本文件,加上brief参数是为了生成的内容更精简一些 。

对64位系统支持

需要说明的是, ChunkSpy在2006年之后就不怎么更新,对现在的 64位系统支持的可能不够好。
如果在执行的时候,发现提示如下的报错:

1
ChunkSpy.lua :1120: mismatch in size_t size (needs 4 but read 8)

那么,可以尝试把代码中两个定义 size size t的地方由4改为8。

ChunkSpy.lua

ChunkSpy.zip

reference

《Lua设计与实现》