Показать сообщение отдельно
Старый 01.07.2015, 14:21   #1
reverse engineer
Салага
 
Регистрация: 04.05.2015
Сообщений: 3
Нация: Англия
Пол: Мужской
Офицеры Корабли
Репутация: 0
По умолчанию Мультизагрузчик аддонов #2

Предыдущая [Для просмотра данной ссылки нужно зарегистрироваться] закрыта, продолжим здесь.

Здравствуйте, господа.
Меня заинтересовала данная тема. Решил написать такой загрузчик. Сейчас есть работающий прототип, протестированный на ГПК и ТДМ. Работа игр осталась "стабильно нестабильной", как и была до этого.

Идея загрузчика - замена файла stormext.dll.
Оригинальный файл stormext.dll в играх, которых он есть, является т.н. "dll-proxy", т.е. посредник между приложением и файлом kernel32.dll с перехватом и изменением поведения необходимых функций (в оригинале это открытие и чтение закрытых исходников скриптовых файлов). Поэтому там, где этот файл используется игрой, никаких дополнительных действий производить не нужно.

Начну с недостатков:
1. Если игра не использует файл stormext.dll (ТДМ, например), необходимо патчить ENGINE.EXE, а именно заменить KERNEL32.DLL (именно в таком виде будет в exe-файле) на stormext.dll.
2. Видео не будет воспроизводиться, кроме случая, когда лежит в корне диска с игрой.
3. Звука не будет, пока не пропатчить fmodex.dll как в п.1 (есть в архиве).
4. Мне не хочется делать GUI, поэтому придётся править всё руками.

Почему нельзя переименовать файл stormext.dll в kernel32.dll и ничего не патчить в версиях игры, где этого файла нет? Потому что файл kernel32.dll является системной библиотекой и операционная система не даст законными методами загрузить свою.

Достоинство такого метода: файлы от игры могут находиться в любом месте. Например, необходимая база для модов по своему пути установки, моды к ней в своих директориях.

Как написано выше, работает без необходимости патча с ГПК. Для ТДМ уже необходимо патчить ехе-файл.
Теоретически, может работать с играми, у которых следующие версии файла stormext.dll:
1. версия 1.9.7.73 (из ГПК), размер файла для справки 148992 байт;
2. версия 1.9.4.60 (из ВМЛ), размер файла 118784 байт.
Есть ли другие версии?

Как безопасно протестировать (на примере ГПК).
Это первая, сырая альфа-версия загрузчика, многие проверки убраны, не испытывайте её на прочность, указывайте корректные значения.
1. Переименовываем файл stormext.dll на, например, stormext1.dll
2. Переименовываем файл fmodex.dll на, например, fmodex1.dll
3. Переименовываем папку resource на resource1
4. Копируем файлы stormext.dll, fmodex.dll и stormext.ini в корневую директорию с игрой.
5. Редактируем stormext.ini, при необходимости. Там немного расписал параметры.
6. Запускаем игру и смотрим вывод файла stormext.log.

Если кого заинтересует, буду расписывать подробнее.
Ссылка на скачивание: [Для просмотра данной ссылки нужно зарегистрироваться] или вложение.

Последний раз редактировалось reverse engineer; 14.07.2015 в 13:42.
reverse engineer вне форума Ответить с цитированием
Пользователь сказал cпасибо:
Королёв (05.07.2015)
Реклама