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

问题描述 投票:0回答:1

所以我有一些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,但是我收到以下错误:

预编译块中的错误标头

如果有人能帮助我那将是非常好的。

lua hex bytecode decompiling
1个回答
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")

反编译完成。

© www.soinside.com 2019 - 2024. All rights reserved.