LUA - компиляция, декомпиляция и дизассемблирование
Поводом для написания статьи стала эта тема Чем открыть Lua-файл. Немножко об языке: Цитата:
Lua — интерпретируемый язык программирования, разработанный подразделением Tecgraf Католического университета Рио-де-Жанейро (Computer Graphics Technology Group of Pontifical Catholic University of Rio de Janeiro in Brazil). Разработанный интерпретатор является свободно распространяемым, с открытыми исходными текстами на языке Си.
По возможностям, идеологии и реализации язык ближе всего к JavaScript, однако Lua отличается более мощными и гораздо более гибкими конструкциями. Хотя Lua не содержит понятия класса и объекта в явном виде, механизмы объектно-ориентированного программирования, включая множественное наследование, легко реализуются с использованием метатаблиц, которые также отвечают за перегрузку операций и т. п. Реализуемая модель объектно-ориентированного программирования — прототипная (как и в JavaScript). Язык широко используется для создания тиражируемого программного обеспечения — в частности, на нём написан графический интерфейс пакета Adobe Lightroom. Также получил известность как язык программирования уровней и расширений во многих играх (например, World of Warcraft) из-за удобства встраивания, скорости исполнения кода и лёгкости обучения. Напишем тестовый скрипт (назовем файл 1.lua): Код:
print ("Hello World") Также Lua имеет возможность компиляции скриптов. Процесс компиляции Для компилирования скрипта можно воспользоваться десктопным компилятором luac, который входит в дистрибутив LuaBinaries, либо сервисом Compile Lua file. Для компиляции воспользуемся интерпретатором командной строки cmd.exe и lua-компилятором - luac.exe. Переходим в директорию, где у нас установлен lua-компилятор (у меня c:\Users\Home\Downloads\lua-5.1.5_Win32_bin\) и используем следующую команду для компиляции: Код:
c:\Users\Home\Downloads\lua-5.1.5_Win32_bin>luac5.1.exe -o 2.luac 1.lua Справка по luac: Код:
Available options are: - process stdin -l list -o name output to file 'name' (default is "luac.out") -p parse only -s strip debug information -v show version information -- stop handling options Для процесса декомпиляции воспользуемся декомпилятором luadec.exe (а также и дизассемблером) из Github-репозитория. Скачать его можно отсюда LuaDec Распаковываем декомпилятор/дизассемблер (c:\Users\Home\Downloads\luadec51_2.0.1_win32_bin\ ). Используем следующую команду для декомпиляции: Код:
luadec 2.luac > 1.lua Процесс дизассемблирования Для процесса дизассемблирования воспользуемся дизассемблером luadec.exe. Используем следующую команду для дизассемблирования: Код:
luadec -dis 2.luac > 3.txt Справка по luadec: Код:
usage: luadec.exe [options] [filename]. Available options are: - process stdin -d output information for debugging the decompiler -dis don't decompile, just disassemble -f num decompile only num-th function (0=main block) -l LDS declare locals as defined by LDS -l2 LDS2 declare locals as defined by LDS2 -dg disable built-in local guessing -pg don't run just print out the LDS2 string used -a always declare all register as locals -- stop handling options Lua - Википедия cmd - Википедия luac man page Luadec - Github LuaBinaries - SourceForge Про Lua Скриптовый язык Lua Compile Lua file Ideone Codepad |
Всего комментариев 2
Комментарии
-
Запись от sourcerer размещена 01.08.2015 в 17:46 -
у меня аварианой не успев запуститься luadec прекращает свою работу,и создает пустой 1.lua
Запись от inquisitor размещена 29.06.2016 в 15:43