如何反编译这个Lua字节码?

时间:2018-09-16 16:24:54

标签: lua hex bytecode decompiling

所以我有一些Lua字节码,现在我想将其重新编译为人类可读的代码:

\27\76\117\97\81\0\1\4\8\4\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\2\4\0\0\0\5\0\0\0\65\64\0\0\28\64\0\1\30\0\128\0\2\0\0\0\4\6\0\0\0\0\0\0\0\112\114\105\110\116\0\4\9\0\0\0\0\0\0\0\72\105\32\116\104\101\114\101\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0

我将如何实现?我尝试使用LuaDec,但出现以下错误:

  

预编译块中的错误标头

如果有人可以帮助我,那就太好了。

1 个答案:

答案 0 :(得分:7)

第1步
将字节码写入文件

local str = '\27\76\117\97\81\0\1\4\8\4\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\2\4\0\0\0\5\0\0\0\65\64\0\0\28\64\0\1\30\0\128\0\2\0\0\0\4\6\0\0\0\0\0\0\0\112\114\105\110\116\0\4\9\0\0\0\0\0\0\0\72\105\32\116\104\101\114\101\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'
local file = io.open("bytecode.lua", "wb")
file:write(str)
file:close()

第2步
安装Lua 5.1(有关详细信息,请参见lua.org)

第3步
运行luac查看字节码的内容

$ ~/lua-5.1.5/src/luac -l -l -p bytecode.lua

main <?:0,0> (4 instructions, 16 bytes at 0x19fd550)
0+ params, 2 slots, 0 upvalues, 0 locals, 2 constants, 0 functions
    1   [-] GETGLOBAL   0 -1    ; print
    2   [-] LOADK       1 -2    ; "Hi there"
    3   [-] CALL        0 2 1
    4   [-] RETURN      0 1
constants (2) for 0x19fd550:
    1   "print"
    2   "Hi there"
locals (0) for 0x19fd550:
upvalues (0) for 0x19fd550:

第4步
手动将字节码指令转换为Lua源文本:-)

print("Hi there")

反编译完成。