Сложность заключается в том, что loadstring
и связанные с ней функции принимают как код lua, так и байтовый код lua. Этот вызов loadstring
просто передает байтовый скомпилированный lua, а не исходный код lua.
Вы можете легко скомпилировать байт lua. Вы можете получить такой пример
- Создайте луа-файл.
- Скомпилируйте его с помощью luac, чтобы сгенерировать lauc.out
- Посмотрите содержимое файла с помощью шестнадцатеричной программы просмотра.
Для пустого файла lua я получаю:
0000000: 1b4c 7561 5100 0104 0804 0800 0900 0000 .LuaQ...........
0000010: 0000 0000 4066 6f6f 2e6c 7561 0000 0000 [email protected]....
0000020: 0000 0000 0000 0002 0201 0000 001e 0080 ................
0000030: 0000 0000 0000 0000 0001 0000 0001 0000 ................
0000040: 0000 0000 0000 0000 00 .........
Перевод первых 8 байтов в десятичный вид:
27, 76, 117, 97, 81, 0, 1, 4
Что соответствует экранированным символам в вашей строке.
Если вам нужны дополнительные сведения о том, что делает код в фрагменте, вам нужно записать фрагмент в файл и использовать инструмент декомпиляции lua для исследования. ChunkSpy, luadec15 и unluac упоминаются в lua wiki страница инструментов.
В фрагменте, который вы предоставили, недостаточно контента, чтобы я мог продолжить его, я полагаю, он усечен?
person
Michael Anderson
schedule
12.04.2013
io.open('bc','w'):write(code)
и декомпилировать его с помощьюluac -l -l bc
. - person Egor Skriptunoff   schedule 12.04.2013