ChunkSpy的工作原理是根据 luac编译之后的二进制文件格式进行解析 。
具体的用法
首先,需要使用 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。