Добро пожаловать, гость ( Вход | Регистрация )
| -=CHE@TER=- |
Jul 28 2006, 20:28
Сообщение
#1
|
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,401 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 323 раз(а) |
Как оказалась игра тупо проверяет все диски на наличие 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 файлами?.. |
-=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![]() ![]() |
| Упрощённая версия | Сейчас: 1st December 2025 - 23:47 |