Перейти к содержимому
Aback Tools Logo

Дизассемблер байт-кода Lua

Дизассемблируйте скомпилированный байт-код Lua 5.1 (файлы .luac), чтобы проверить инструкции виртуальной машины, прототипы функций, константы и локальные переменные. Загрузите файл .luac или вставьте его шестнадцатеричный дамп, чтобы получить полную структурированную дизассемблировку с навигационным деревом функций и подробным декодированием кода операции. Вся обработка является локальной и частной.

Lua Bytecode Disassembler
Disassemble compiled Lua 5.1 bytecode (.luac files) into human-readable instructions. Upload a .luac file or paste its hex dump to view function prototypes, opcodes, constants, upvalues, locals, and debug information. Supports Lua 5.1 bytecode format.

No bytecode loaded

Upload a compiled .luac file or paste its hex dump to begin disassembly

or

Зачем использовать наш дизассемблер байт-кода Lua?

  • Анализ байт-кода Lua 5.1: анализ и дизассемблирование скомпилированного байт-кода Lua 5.1 (файлы .luac) с полной поддержкой всех 38 кодов операций, режимов инструкций ABC/ABx/AsBx и правильным декодированием констант, повышающих значений, локальных переменных и информации о номерах строк.
  • Дерево вложенных функций: изучите полную иерархию прототипов функций с помощью интерактивного древовидного представления. Перемещайтесь между вложенными замыканиями, просматривайте списки инструкций для каждой функции и углубляйтесь в дочерние функции одним щелчком мыши.
  • Подробное декодирование инструкций: каждая инструкция полностью декодируется с использованием необработанного шестнадцатеричного кода, имени кода операции, регистровых операндов и удобочитаемого комментария, объясняющего ее эффект. Специальное выделение инструкций возврата и хвостового вызова упрощает отслеживание потока управления.
  • 100% локальная обработка в браузере: весь анализ и дизассемблирование байт-кода происходит полностью в вашем браузере. Ваши файлы .luac и шестнадцатеричные дампы никогда не покидают ваше устройство. Не требуется загрузка на какой-либо сервер, не требуется регистрация и нет ограничений на использование. Бесплатно навсегда.

Распространенные случаи использования дизассемблера байт-кода Lua

  • Реверс-инжиниринг приложений Lua: дизассемблируйте скомпилированные сценарии Lua из игр, встроенных систем и приложений, чтобы понять их логику. Дизассемблер байт-кода раскрывает точные инструкции и поток управления, помогая вам анализировать проприетарный или запутанный код Lua.
  • Изучение внутреннего устройства виртуальной машины Lua. Используйте дизассемблер в качестве учебного инструмента, чтобы понять, как виртуальная машина Lua выполняет код. Посмотрите, как высокоуровневые конструкции Lua, такие как циклы, вызовы функций, замыкания и табличные операции, преобразуются в инструкции байт-кода.
  • Аудит безопасности и анализ вредоносного ПО: анализируйте скомпилированные сценарии Lua на наличие вредоносного поведения. Дизассемблируйте потенциально опасные файлы .luac, чтобы проверить их инструкции, обнаружить подозрительные константные строки и понять весь объем встроенной логики, не выполняя ее.
  • Проверка Lua Obfuscator: проверьте эффективность инструментов Lua обфускации, дизассемблировав выходные данные. Убедитесь, что переименование переменных, кодирование строк и обфускация потока управления правильно применяются к уровню байт-кода, а не только к уровню исходного кода.
  • Исследование разработки компиляторов и языков: сравнение вывода байт-кода различных компиляторов и версий Lua. Поймите решения по оптимизации, выбор инструкций и то, как разные конструкции Lua по-разному компилируются в версиях с 5.1 по 5.3.
  • Восстановление и документация устаревшего кода: восстановите понимание недокументированных или заархивированных модулей Lua путем дизассемблирования их скомпилированных форм. Подробный список инструкций, таблицы констант и информация о локальных переменных помогают восстановить семантику исходного кода.

Что такое дизассемблирование байт-кода Lua?

Дизассемблирование байт-кода Lua — это процесс преобразования скомпилированного байт-кода Lua (файлы .luac) обратно в удобочитаемую последовательность инструкций виртуальной машины. Когда вы компилируете сценарий Lua с помощью luac или запускаете его через интерпретатор Lua, исходный код преобразуется в промежуточный формат байт-кода, который выполняет виртуальная машина Lua. Дизассемблирование меняет этот скомпилированный формат, чтобы выявить точные инструкции, константы, повышающие значения и прототипы функций, составляющие скомпилированную программу, не требуя доступа к исходному исходному коду.

Как работает наш дизассемблер байт-кода Lua

  1. Ввод: Загрузите скомпилированный файл .luac или вставьте его шестнадцатеричное представление в панель ввода. Инструмент принимает формат байт-кода Lua 5.1, который является наиболее широко поддерживаемой версией для анализа байт-кода и обратного проектирования скомпилированных сценариев Lua.
  2. Анализ: дизассемблер считывает двоичный заголовок, чтобы проверить подпись, версию, порядок байтов и размеры типов данных. Затем он рекурсивно анализирует все прототипы функций, декодируя каждую 32-битную инструкцию в ее код операции и операнды (A, B, C, Bx или sBx в зависимости от режима инструкции).
  3. Вывод: структурированный вывод показывает информацию заголовка, дерево функций с возможностью навигации, подробные прототипы каждой функции (параметры, размер стека, состояние переменных аргументов), полный список инструкций с комментариями, таблицу констант и области видимости локальных переменных.

Что отображается во время дизассемблирования

  • Информация заголовка: подпись байт-кода, версия Lua, порядок байтов и размеры типов данных (int, size_t, инструкция, число), которые описывают формат байт-кода.
  • Дерево функций: иерархическое представление всех прототипов функций в файле байт-кода с диапазонами строк и количеством инструкций для быстрой навигации между вложенными замыканиями.
  • Листинг инструкций: каждая инструкция показывает смещение адреса, необработанное шестнадцатеричное значение, имя кода операции (MOVE, LOADK, ADD, CALL и т. д.), декодированный дизассемблер со ссылками на регистры/константы и комментарий на простом английском языке, объясняющий операцию.
  • Таблицы констант и локальных переменных: все константные значения (числа, строки, логические значения, ноль), используемые функцией, а также области видимости локальных переменных с их позициями начального и конечного счетчика программы.

Конфиденциальность, безопасность и доступность

Ваша конфиденциальность полностью защищена. Вся обработка дизассемблирования байт-кода Lua происходит полностью в вашем браузере с использованием JavaScript — никакие данные байт-кода никогда не загружаются на какой-либо сервер, не сохраняются, не регистрируются и не передаются. Инструмент не требует создания учетной записи, регистрации и не накладывает ограничений на размер файла. Это совершенно бесплатно, без каких-либо премиальных уровней, ограничений на использование или скрытых платежей. Вы можете использовать его так часто, как это необходимо для исследований в области безопасности, обратного проектирования, образования или любых других целей.

Часто задаваемые вопросы

Дизассемблер байт-кода Lua — это инструмент, который преобразует скомпилированный байт-код Lua (файлы .luac) в удобочитаемую последовательность инструкций виртуальной машины. Он показывает точные коды операций, регистровые операнды, константы и прототипы функций, которые выполняет виртуальная машина Lua, что позволяет вам понять скомпилированную версию сценария Lua без доступа к исходному исходному коду.

Дизассемблер полностью поддерживает формат байт-кода Lua 5.1, который является наиболее широко декомпилируемой и анализируемой версией. Lua 5.1 имеет 38 кодов операций, охватывающих все распространенные операции, такие как перемещения, арифметика, доступ к таблицам, вызовы функций, циклы и замыкания. Анализатор проверяет подпись и версию байт-кода и сообщает об ошибке для неподдерживаемых версий.

Вы можете загрузить файл .luac напрямую с помощью кнопки загрузки или вставить шестнадцатеричный дамп байт-кода в текстовую область. Инструмент автоматически проанализирует двоичные данные и отобразит структурированную дизассемблирование. Для шестнадцатеричных дампов входные данные должны представлять собой простую шестнадцатеричную строку с необязательными пробелами или разрывами строк между байтами.

Да. На панели дерева функций показаны все прототипы функций в файле байт-кода, включая вложенные замыкания. Щелкните любую функцию в дереве, чтобы переключить список инструкций и таблицу констант на эту функцию. Это особенно полезно для анализа запутанного кода Lua, использующего несколько вложенных замыканий.

Выходные данные включают заголовок байт-кода (сигнатура, версия, порядок байтов, размеры данных), дерево функций со всеми прототипами, сведения о каждой функции (параметры, размер стека, статус vararg), полный список инструкций с необработанным шестнадцатеричным кодом, имена кодов операций, декодированные операнды и комментарии, таблица констант со всеми числовыми/строковыми/логическими/ноль значениями и таблица локальных переменных с информацией об области действия.

Lua 5.1 использует три режима кодирования инструкций. Режим ABC кодирует три операнда: A (8-битный регистр назначения), B (9-битный регистр источника или постоянный индекс) и C (9-битный второй источник или параметры). Режим ABx кодирует A и комбинированный операнд Bx (18 бит), используемый для больших индексов, в таблицу констант. Режим AsBx — это знаковый вариант ABx, используемый для смещения перехода в инструкциях JMP, FORLOOP и FORPREP.

Абсолютно. Весь анализ и дизассемблирование байт-кода происходит полностью в вашем браузере с использованием JavaScript. Ваши файлы .luac и шестнадцатеричные дампы никогда не покидают ваше устройство и никогда не отправляются на какой-либо сервер. Учетная запись не требуется, данные не сохраняются и отслеживание не происходит. Это делает инструмент безопасным для анализа проприетарных или конфиденциальных скомпилированных скриптов Lua.

Запутанный байт-код Lua может демонстрировать необычные шаблоны, такие как чрезмерно длинные константные строки (предположительно закодированные полезные данные), большое количество вложенных замыканий, избыточные инструкции MOVE, интенсивное использование GETUPVAL/SETUPVAL для косвенного доступа к переменным или непрозрачный поток управления со многими инструкциями JMP. Дизассемблер помогает обнаружить эти закономерности, показывая полную последовательность команд.

Да, 100% бесплатно. Здесь нет регистрации, премиум-уровня, ограничений на использование и ограничений на размер файлов. Этот инструмент полностью работает в вашем браузере и всегда будет бесплатным для использования в Aback Tools.