![]() |
eXeL@B —› Вопросы новичков —› Исходник .lh из Autoplay Media Studio + MemoryEx LH Compiler |
Посл.ответ | Сообщение |
|
Создано: 23 июня 2017 09:43 · Поправил: Xsite · Личное сообщение · #1 Часом нико не занимался выдергиванием исходного кода, если это вообще возможно, из .lh файлов скомпилированных с помощью Для этого всего есть собственно сам компилятор (ссылка выше) и Пробовал прогонять готовый проект через дебагер (x64dbg), нашел примерно место, где происходит подгрузка .lh файла, дампил память, колупал сам компилятор, но знаний и опыта не хватает, что бы что то получилось ![]() Часами гуглил, но ничего не нашел даже близкого ![]() Пример проекта из примеров студии - ![]() |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 23 июня 2017 12:13 · Личное сообщение · #2 Xsite пишет: Пример проекта из примеров студии - --> Link <-- Конечно я не имел дела с этими програмами. Сейчас просто немного подебажил. По-моему, там не совсем в lh дело. AutoPlay\autorun.cdd - это обычный запароленный .zip архив с тремя файло: _proj.dat, _fonts.dat, _detect.dat. AutoPlay\Plugins\MemoryEx.lmd - это exe'шник работающий с rgba.lh AutoPlay\Docs\rgba.lh - формат MXLH (4D 58 4C 48 9E 91 32 D0 - первые байты). Но оно явно не имеет отношения к MXL-формату 1C. Там вероятно на lua-скриптахъ завязано (lua5.1.dll и lua51.dll намекают). В autorun.exe расшифровка архива вроде тут: Code:
MemoryEx.lmd - чтение и работа с rgba.lh тут: Code:
А что Вы контретно накопали по "колупанию" самого компилятора? Отпароливали ли _proj.dat, _fonts.dat, _detect.dat в архиве autorun.cdd?? ![]() |
|
Создано: 23 июня 2017 13:18 · Поправил: Xsite · Личное сообщение · #3 ELF_7719116, не, мне именно надо из .lh исходник выдернуть, если это вообще возможно. То, что autorun.cdd это архив я знаю. Он вскрывается _proj.dat это собственно и есть основной исходник программы на lua. Основной исходник программы пишется на lua, но к нему можно подключать скомпилированные .lh, которые по сути работают как подключаемая библиотека. Подключение этого .lh происходит с использованием бибилотеки MemoryEx.lmd (это .dll). Это не основная функция библиотеки и библиотека служит для много чего другого. По текущему примеру подключается это все Code:
И потом можно пользоваться функциями их этого самого .lh, вроде rgba.getRed(), rgba.getBlue() и т.д. То, что это все на lua пишется и наталкивает на мысль, что этот самый .lh в какой то момент выполнения преобразуется в исходный код. Хотя может и нет, т.к. этот компилятор поддерживает ассемблерные вставки на fAsm и это все как то иначе работает... Собственно у самого rgba.lh есть известный Естественно мне не именно эту программу "поломать" надо. Это просто аналогичный пример, максимально простой, без нагромождений лишних фич, плагинов и т.д. Копание в компиляторе тоже мне толком ничего не дало, я там заблудился в переходах и само место где парсится исходник не нашел. А за что зацепиться толком не знаю. Я думал, что может быть кто нибудь более опытный это уже колупал или захочет поколупать (может кому интересно), т.к. я по сути ламер и "разбираюсь" (если это так можно назвать) в этом всем весьма поверхностно. ![]() |
|
Создано: 19 ноября 2017 21:54 · Поправил: Adler · Личное сообщение · #4 Может кому пригодится. При отладке в модуле MemoryEx.lmd находим сигнатуру E8 45 3D 00 00 (для модуля из примера в первом после, для других версий вероятно другой, надо искать). Сдампив память по адресу, содержащемуся в EAX до вызова функции с сигнатурой выше (дампим естественно после вызова) получаем бинарник LUA (начинается с ".LuaQ"(1B 4C 75 61 51)), который в последствии можно декомпилировать в читабельный формат с помощью Luadec51.exe. Правда с примера в первом посте читабельный исходник получить не получилось (возможно из-за наличия в нем ASM функций), но на некоторых других примерах получаемый исходник вполне читабельный. P.S. ![]() |
|
Создано: 20 ноября 2017 07:27 · Личное сообщение · #5 Это, возможно, никому не пригодится. Но раз уж на то пошло, интерпретатор луа там стандартный (можно убедиться, заменив либу), значит, все скрипты можно отловить на экспортируемой функции lua_load. Асм вставок внутри самого скрипта нет, они хранятся с контейнере *.lh и загружаются в память перед использованием. Стоит поискать VirtualAlloc с флагом PAGE_EXECUTE, если найдете нужное место - сможете снять дамп асм вставки + узнать имя метода, по которому её идентифицурет скрипт. ![]() |
|
Создано: 20 ноября 2017 11:09 · Личное сообщение · #6 |
![]() |
eXeL@B —› Вопросы новичков —› Исходник .lh из Autoplay Media Studio + MemoryEx LH Compiler |