IPB

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

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


Walter Sullivan
***

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



Как оказалась игра тупо проверяет все диски на наличие 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
 
Reply to this topicStart new topic
Ответов
-=CHE@TER=-
Aug 3 2006, 06:19
Сообщение #2


Walter Sullivan
***

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



Спасибо, что откликнулись!

QUOTE(jTommy @ Aug 2 2006, 08:31 PM) *
Может не стоит так заморачиваться?
1. 600мб на диске не так уж много
2. можно попробовать вручную (или прогой Mini-Image Ripper, например) изготовить мини-образ.
3. Для английской версии есть лекарство или ты русскую исследуешь?

1. Не... так не пойдёт - у меня из-за всех игр, которые я сейчас исследую - всего 200 метров свободных осталось... Да и вообще - элементарно подсчитай: допустим у тебя стоит 10 игр - и каждая по 600 Мб... 600*10 = 6 Гб. Дальше - больше. "Это не наш метод". © (*улыбается*)
2. Тоже не канает - на приведённых выше .BAT файлах заморочек меньше.
3. Я исследую лицензионную русскую версию от Russobit-M - другой у меня нет.

QUOTE(Siberian GRemlin @ Aug 3 2006, 06:05 AM) *
Я EXE'шник не видел, но что если в нём написать, чтобы он проверял не на дисках а в папке с игрой или оттуда откуда он расположен, чтобы он проверял ".\Data\MACAnodes.m3a". Каким орбазом хранится путь в EXE'шнике к этому файлу? Если просто строка "%c:\Data\MACAnodes.m3a", то замени её на ".\Data\MACAnodes.m3a", т.к. она короче на два байта оригинальной, то получится ".\Data\MACAnodes.m3a"+Chr(0)+Chr(0)

Ну, во-первых, на что ты не обратил внимания и из-за чего идёт такой гемморой - строчку "%c:\Data\MACAnodes.m3a" я взял из распакованного и сдампленного из памяти файла. В оригинальном файле - ты её не найдёшь и изменить нормально не сможешь, т.к. файл упакован. (*улыбается*)
Во-вторых, замена на ".\Data\MACAnodes.m3a"+Chr(0)+Chr(0) не пройдёт, потому что там вызывается sprintf(), а она должна куда-то параметр диска сувать - а т.к. у тебя в строчке теперь не будет "%c" - то из-за засунутого в стэк и неиспользуемого адреса буквы диска полезут глюки (я, как ты предлагаешь, делал на одной игре - получил, что называется, по морде Fatal Error'ом). (*улыбается*)

В общем, нужен Dumper... сейчас думаю заняться геммором - запустить виртуальную машину - там запустить эту прогу и сдампить всю виртуальную машину (16 Мб) - может там найду собранный .EXE'шник...
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
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 27th April 2024 - 13:48