eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: Virtran (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› Исходник .lh из Autoplay Media Studio + MemoryEx LH Compiler
Посл.ответ Сообщение

Ранг: -0.1 (нарушитель)
Статус: Участник

Создано: 23 июня 2017 09:43 · Поправил: Xsite New!
Цитата · Личное сообщение · #1

Часом нико не занимался выдергиванием исходного кода, если это вообще возможно, из .lh файлов скомпилированных с помощью MemoryEx LH Compiler для Autoplay Media Studio?
Для этого всего есть собственно сам компилятор (ссылка выше) и плагин для AMS, который может "прикручивать" этот скомпилированный файл к проекту.
Пробовал прогонять готовый проект через дебагер (x64dbg), нашел примерно место, где происходит подгрузка .lh файла, дампил память, колупал сам компилятор, но знаний и опыта не хватает, что бы что то получилось
Часами гуглил, но ничего не нашел даже близкого

Пример проекта из примеров студии - --> Link <--

Ранг: 377.8 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 23 июня 2017 12:13 New!
Цитата · Личное сообщение · #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:
  1. 00528A53  |> \8B4C24 34     MOV ECX,DWORD PTR SS:[ESP+34]
  2. 00528A57  |.  8B5424 18     MOV EDX,DWORD PTR SS:[ESP+18]
  3. 00528A5B  |.  8B4424 28     MOV EAX,DWORD PTR SS:[ESP+28]
  4. 00528A5F  |.  51            PUSH ECX                                 ; /Arg4 => [8C10E0] = 6
  5. 00528A60  |.  8B4C24 18     MOV ECX,DWORD PTR SS:[ESP+18]            ; |
  6. 00528A64  |.  52            PUSH EDX                                 ; |Arg3 => [8C10DC] = 9
  7. 00528A65  |.  50            PUSH EAX                                 ; |Arg2
  8. 00528A66  |.  51            PUSH ECX                                 ; |Arg1
  9. 00528A67  |.  E8 B4F4FFFF   CALL 00527F20                            ; \autorun.00527F20


MemoryEx.lmd - чтение и работа с rgba.lh тут:
Code:
  1. 01F28AAD  |.  68 30000000   PUSH 30                                  ; /Arg3 = 30
  2. 01F28AB2  |.  8D4424 0C     LEA EAX,[ESP+0C]                         ; |
  3. 01F28AB6  |.  50            PUSH EAX                                 ; |Arg2
  4. 01F28AB7  |.  FF7424 6C     PUSH DWORD PTR SS:[ESP+6C]               ; |Arg1
  5. 01F28ABB  |.  E8 D0520000   CALL 01F2DD90                            ; \MemoryEx_lmd.01F2DD90
  6. 01F28AC0  |.  8D6C24 08     LEA EBP,[ESP+8]
  7. 01F28AC4  |.  8B5D 00       MOV EBX,DWORD PTR SS:[EBP]
  8. 01F28AC7  |.  81FB 4D584C48 CMP EBX, 0x484C584D //проверка сигнатуры MXLH
  9. 01F28ACD  |.  0F85 DE060000 JNE 01F291B1


А что Вы контретно накопали по "колупанию" самого компилятора?
Отпароливали ли _proj.dat, _fonts.dat, _detect.dat в архиве autorun.cdd??

Ранг: -0.1 (нарушитель)
Статус: Участник

Создано: 23 июня 2017 13:18 · Поправил: Xsite New!
Цитата · Личное сообщение · #3

ELF_7719116, не, мне именно надо из .lh исходник выдернуть, если это вообще возможно.
То, что autorun.cdd это архив я знаю. Он вскрывается AMSUnpacker`ом. Он (унпакер) на C# написан, так что его тоже разбирал, что бы понять как оно распаковывается. Там все относительно просто. Пароль в самом autorun.exe зашит, он оттуда выдергивается, перекодируется в IBM437 и им распаковывается.
_proj.dat это собственно и есть основной исходник программы на lua.
Основной исходник программы пишется на lua, но к нему можно подключать скомпилированные .lh, которые по сути работают как подключаемая библиотека. Подключение этого .lh происходит с использованием бибилотеки MemoryEx.lmd (это .dll). Это не основная функция библиотеки и библиотека служит для много чего другого.

По текущему примеру подключается это все
Code:
  1. rgba, szerr, nerr = MemoryEx.LoadLH("AutoPlay\Docs\rgba.lh");

И потом можно пользоваться функциями их этого самого .lh, вроде rgba.getRed(), rgba.getBlue() и т.д.

То, что это все на lua пишется и наталкивает на мысль, что этот самый .lh в какой то момент выполнения преобразуется в исходный код. Хотя может и нет, т.к. этот компилятор поддерживает ассемблерные вставки на fAsm и это все как то иначе работает...
Собственно у самого rgba.lh есть известный исходник.

Естественно мне не именно эту программу "поломать" надо. Это просто аналогичный пример, максимально простой, без нагромождений лишних фич, плагинов и т.д.

Копание в компиляторе тоже мне толком ничего не дало, я там заблудился в переходах и само место где парсится исходник не нашел. А за что зацепиться толком не знаю.

Я думал, что может быть кто нибудь более опытный это уже колупал или захочет поколупать (может кому интересно), т.к. я по сути ламер и "разбираюсь" (если это так можно назвать) в этом всем весьма поверхностно.

Ранг: 28.8 (посетитель)
Статус: Участник

Создано: 19 ноября 2017 21:54 · Поправил: Adler New!
Цитата · Личное сообщение · #4

Может кому пригодится.
При отладке в модуле MemoryEx.lmd находим сигнатуру E8 45 3D 00 00 (для модуля из примера в первом после, для других версий вероятно другой, надо искать).
Сдампив память по адресу, содержащемуся в EAX до вызова функции с сигнатурой выше (дампим естественно после вызова) получаем бинарник LUA (начинается с ".LuaQ"(1B 4C 75 61 51)), который в последствии можно декомпилировать в читабельный формат с помощью Luadec51.exe.

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

P.S. Этот luadec получает более читабельный исходник

Ранг: 35.8 (посетитель)
Статус: Участник

Создано: 20 ноября 2017 07:27 New!
Цитата · Личное сообщение · #5

Это, возможно, никому не пригодится. Но раз уж на то пошло, интерпретатор луа там стандартный (можно убедиться, заменив либу), значит, все скрипты можно отловить на экспортируемой функции lua_load. Асм вставок внутри самого скрипта нет, они хранятся с контейнере *.lh и загружаются в память перед использованием. Стоит поискать VirtualAlloc с флагом PAGE_EXECUTE, если найдете нужное место - сможете снять дамп асм вставки + узнать имя метода, по которому её идентифицурет скрипт.

Ранг: 28.8 (посетитель)
Статус: Участник

Создано: 20 ноября 2017 11:09 New!
Цитата · Личное сообщение · #6

Psalmopoeus Pulcher, спасибо за наводку
Оказывается, что через lua_load все просто, а я дурень этот MemoryEx колупал.
Я подозревал, что через lua5.1.dll это можно сделать, но не знал где искать.
Ну ничего, все же практика...
 eXeL@B —› Вопросы новичков —› Исходник .lh из Autoplay Media Studio + MemoryEx LH Compiler

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS