Как декомпилировать этот байт-код Lua? - PullRequest
0 голосов
/ 16 сентября 2018

Итак, у меня есть некоторый байт-код 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 голосов
/ 16 сентября 2018

Шаг 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")

Декомпиляция завершена.

...