Luсky
Да, ешь мясо и спи не меньше восьми чесов.
Egor
Luсky
На хабре есть курс
Luсky
Публикации / Профиль haqreu / Хабр
https://habr.com/ru/users/haqreu/
Egor
Luсky
Если надоест, просто скачай Godot.
Egor
Igor
Слушайте, а знает кто-нибудь, между Lua 5.0 и 5.1 прям капец сильно байткод разнится? Можно ли старый путём патчей до 5.1 довести? Предполагаю, что изменить хедер будет недостаточно))
Igor
Мне просто как-то лень лазить по исходникам того и другого компилятора и сравнивать сидеть
UtoECat
Мне просто как-то лень лазить по исходникам того и другого компилятора и сравнивать сидеть
И ты предлагаешь это делать другим за тебя? 😁
Я сейчас в своеобразном отпуске, помочь не смогу сильно.
По факту, достаточно будет сравнить количество инструкций и количество и тип их аргументов.
Но.
Ты не пробовал взять за основу какой-нибудь декомпилятор байткода обратно в код? И потом его скомпилить в 5.1? Даже если у тебя вм 5.0 кастомная, добавить парочку инструкций в существующий инструмент будет легче чем писать свой и уж тем более легче чем делать всё это ручками 😁
Igor
Igor
Если нет, то че уж делать, полезу сам
Igor
Igor
Декомпилятора нормального просто нет
Igor
Оригинальный LuaDec, что написан Хишамом просто крашится от скриптов, которые я ему кормлю
Igor
А те, которые у него получается декомпилировать теряют куски кода какие-то
Igor
И декомпилятор об этом никак не сообщает
UtoECat
Igor
Да, я сравнивал машины
Igor
Разве что lua_Number заменен с double на float, больше изменений нет
Igor
Но и это изменение я внёс в декомпилятор, естественно
Igor
Путём хукования
Igor
И байткод нормально исполняется ванильной машиной
Igor
Igor
Байткод разнится только между мажорными версиями Lua
Igor
А вообще изначальная машина там 5.0.2, я её до 5.0.3 подменил и всё работает
UtoECat
А вообще изначальная машина там 5.0.2, я её до 5.0.3 подменил и всё работает
Ну тогда да, дебажить декомпилятор, разве что.
А пробовал грузить байткод отдельно? На виртуалке? Т.е не чтобы он выполнятся, а просто для проверки, что он может загрузится без ошибок.
Просто тебе и так придётся копаться в lvm.c и загрузчике/дампере байткода 5.0 для этого, а в случае написания отдельного инструмента ты нагрузишь себя этим вдвойне, с версии 5.1, что не хорошо, можно очень легко запутаться.
Igor
Igor
Блин, точно, вспомнил, там же вроде инструкции какие-то депрекейтнули при переходе на 5.1
UtoECat
Igor
Igor
Ванильная lua50, только с измененным типом lua_Number, байткод скрипт из игры
Aqendo
Igor
Какой-то код теряется
Igor
и регистры портятся
Aqendo
Есть программа на андроид, sstool называется, китайская
Aqendo
Она тоже декодит
Igor
Igor
или unluac
Aqendo
Но там настраивается декодинг
Igor
Декомпилировал скрипт вот этот util.lur через unluac
Igor
Это прям совсем маленький скрипт
Igor
Обёртка над корутинами, грубо говоря
Igor
Попытался его игре подсунуть
Igor
И в ответ получил это:
Lua Thread: 0x13497E70[1] error: Scripts\Dumps\util.lua:73: attempt to call local `L0_4' (a nil value)
Igor
Соответственно опять какой-то кусок кода потерялся
Igor
Aqendo
кстати унлуаки тоже разные есть
Aqendo
сейчас попробую найти разные...
Aqendo
модификации есть
Igor
Кстати важная заметка, у скриптов игровых вырезаны байткодные дебаг-данные
Igor
Именно это и сводит декомпиляторы с ума
UtoECat
Igor
а сам скрипт синтаксически верен
Igor
Igor
Оба примерно на одном месте запинаются
Igor
Aqendo
Скрипт приватный? У меня есть апк декодера, но я хз вирус или нет, поэтому лучше не буду присылать
Aqendo
Могу попробовать расшифровать
Igor
Igor
Igor
Предположил, что она для восстановления нейминга нужна
Aqendo
http://hg.code.sf.net/p/unluac/hgcode
unluac обновляется до сих пор что-ли?
Igor