IPB

Добро пожаловать, гость ( Вход | Регистрация )

> Myst III: Exile, No-CD
-=CHE@TER=-
Jul 28 2006, 20:28
Сообщение #1


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,361
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 314 раз(а)



Как оказалась игра тупо проверяет все диски на наличие 1-го файла:

%c:\Data\MACAnodes.m3a

(%c - буква (формат-строка из C) диска, от A до Z)

Причём, ни размер ни чтобы то ни было, больше не проверяется.
Сейчас сделал банальный No-CD:

InstallDrive.bat:
CODE
@echo off
md Data
cls > "Data\MACAnodes.m3a"
subst Z: .
cls


UnInstallDrive.bat:
CODE
@echo off
subst Z: /D
del "Data\MACAnodes.m3a"
rd Data
cls


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

Увы, игра оказалась очень замороченной:
1) В игре два файла в \MYST III - Exile\Bin\ на которые нужно обратить внимание:
M3R.exe (465.920 байт)
Inst.dat (26.112 байт)
2) Файл Inst.dat содержит в начале "UPX0", ".hole", затем "rsrc" (стандартная для Win32 приложений).
3) M3R.exe написан то ли на Delphi, то ли на Builder и в конце содержит сплошной мусор, который в своём хвосте, в свою очередь, содержит всякие ссылки на .DLL и экспортируемые оттуда функции (типа DirectDrawCreate). Кстати - в Inst.dat в конце - тоже самое.
4) Что происходит при запуске игры - файла M3R.exe:
а) запускается M3R.exe
б) читает с диска Inst.dat в память как "спящий" процесс
в) добавляет в него тот самый мусор из хвоста файла M3R.exe и получает полноценную программу
г) "отпускает" спящий процесс Inst.dat на выполнение и M3R.exe завершает свою работу
д) Inst.dat, в свою очередь, распаковывается и начинает работать

Мне удалось на шаге д) "присосаться" через OllyDbg32 к процессу Inst.dat и дампнуть его. Оттуда я и узнал (там уже было всё распаковано) про проверку файла "%c:\Data\MACAnodes.m3a" на диске.

Сделать нормальный No-CD мешает именно такая странная разбивка файла - я пустил M3R.exe под IDA, даже нашёл место, где оно склеивает всё в одно, загружает процесс "спящим", но так и не смог разобраться, в какое именно место нужно было "вклеить" хвост из M3R.exe и с какого места хвост брать.

По хорошему, что нужно сделать:
1) Inst.dat + хвост из M3R.exe = Inst.exe
2) Если это и правда UPX - то распаковать
3) Пустить под дизассемблером и найти нужное место, поправить 1(2) байт(а)
4) Запаковать всё обратно
5) Посмотреть, чем различаются обычный Inst.exe и тот, что мы снова перепаковали - там различие должно быть, максимум, в 10 байтах.
6) Найти эти байты в M3R.exe в хвосте и сделать нормальный .CXP No-CD.

А данном алгоритме я сразу сел на шаге 1) ибо не знаю куда в нутрях Inst.dat вставлять кусок и как его вытаскивать из M3R.exe

Кто-нибудь хочет помочь или обойдёмся .BAT файлами?..
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Сообщения в этой теме
-=CHE@TER=-   Myst III: Exile   Jul 28 2006, 20:28
-=CHE@TER=-   Всё ещё воюю с Inst.dat - "поможите чем можит...   Aug 2 2006, 14:21
jTommy   Может не стоит так заморачиваться? 1. 600мб на дис...   Aug 2 2006, 20:31
Siberian GRemlin   3. Для английской версии есть лекарство или ты ру...   Aug 3 2006, 08:45
jTommy   Ты бы привёл ссылку (я найти не смог, например (ч...   Aug 3 2006, 17:49
-=CHE@TER=-   Лекарство я в локальной сети нашел, вот оно: http:...   Aug 3 2006, 18:16
Siberian GRemlin   Как оказалась игра тупо проверяет все диски на на...   Aug 3 2006, 06:05
-=CHE@TER=-   Спасибо, что откликнулись! Может не стоит так...   Aug 3 2006, 06:19
Siberian GRemlin   Во-вторых, замена на ".\Data\MACAn...   Aug 3 2006, 06:59
-=CHE@TER=-   ".\%cata\MACAnodes.m3a"+Chr(0)...   Aug 3 2006, 08:06
jTommy   Попробуй подставь в игрушку англ. exe-шники, вдруг...   Aug 3 2006, 20:41
Siberian GRemlin   Прочитал на одном форуме, что английский No-CD под...   Aug 4 2006, 02:48
-=CHE@TER=-   Прочитал на одном форуме, что английский No-CD под...   Aug 4 2006, 07:55
-=CHE@TER=-   Понимаю, что 16 лет спустя оно вряд ли кому-то нуж...   Jul 3 2022, 09:53


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 16th November 2024 - 09:35