The Last Express Gold Edition, набор символов шрифта |
Добро пожаловать, гость ( Вход | Регистрация )
The Last Express Gold Edition, набор символов шрифта |
Siberian GRemlin |
Jun 26 2016, 06:32
Сообщение
#1
|
Advanced Member Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) |
«Золотое издание» это старая игра адаптированная под современные системы, к сожалению «ХР» не поддерживается. Возникла проблема с отображением субтитров. Хоть текст изначально закодирован двумя байтами, но игра отбрасывает первый байт и использует только второй. Причём выводит только западноевропейскую латиницу. Проблема в том, что используется системный Arial и это никак нельзя изменить — ЕХЕ проверяет свою целостность, что лицензионная копия, что взломанная. Попробовал сделать грязным способом — добавил нужные коды кириллице, установил шрифт. Он добавился в набор шрифтов, и кириллица стала выводиться вместо доп. латиницы и в игре и в системе, а значит везде. Шрифт теперь можно удалить только из-под другой ОС, что очень плохо.
И, да, я проверил через «Process Monitor» — игра не обращается к arial.ttf напрямую, а через системную API его загружает. В противном случае я ей изменённый шрифт просто в папку положил бы. К счастью, хоть название шрифта записано в защищённом ЕХЕ, но вызов функции находится в DLL, файл которой можно изменять. Наткнулся на интересную статью по решению подобных проблем, но мне сложно понять где в данном случае этот параметр отвечающий за набор символов находится. Сама библиотека. Взломанную игру долго искал и качал пару дней, если нужна, то могу поделиться (на ХР не идёт). Буду признателен, если кто-нибудь сможет подсказать какой байт исправить с 0 на 1, чтобы изменить набор символов перед вызовом функции. В перспективе это может пригодиться для других игр, например, «Little Big Adventure Enhenced Edition» сделана с использованием этой библиотеки, но эта игра вроде системные шрифты не использует. |
-=CHE@TER=- |
Jun 27 2016, 13:02
Сообщение
#2
|
Walter Sullivan Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) |
Не пробовал свою программу от имени администратора запускать?
Если у тебя Windows Vista и выше, а игра установлена в Program Files, то тебе сама система может права резать. А когда ты на своей тестовой программе проверяешь, то она у тебя, поди, рядом с изменялкой лежит? Кстати, если у тебя ReadProcessMemory() = false, то сделай вывод GetLastError(), даже лучше так: // устанавливаем последнюю ошибку, чтоб старая не отсвечивала SetLastError(0); if (ReadProcessMemory(...) = false) then writeln(GetLastError); // смотрим что там не так И посмотри какой код ошибки возвращается - оттуда уже можно будет разбираться почему память не читает. |
Упрощённая версия | Сейчас: 29th September 2024 - 00:53 |