Добро пожаловать, гость ( Вход | Регистрация )
| Siberian GRemlin |
Jun 26 2016, 06:32
Сообщение
#1
|
|
Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 538 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 223 раз(а) |
«Золотое издание» это старая игра адаптированная под современные системы, к сожалению «ХР» не поддерживается. Возникла проблема с отображением субтитров. Хоть текст изначально закодирован двумя байтами, но игра отбрасывает первый байт и использует только второй. Причём выводит только западноевропейскую латиницу. Проблема в том, что используется системный Arial и это никак нельзя изменить — ЕХЕ проверяет свою целостность, что лицензионная копия, что взломанная. Попробовал сделать грязным способом — добавил нужные коды кириллице, установил шрифт. Он добавился в набор шрифтов, и кириллица стала выводиться вместо доп. латиницы и в игре и в системе, а значит везде. Шрифт теперь можно удалить только из-под другой ОС, что очень плохо.
И, да, я проверил через «Process Monitor» — игра не обращается к arial.ttf напрямую, а через системную API его загружает. В противном случае я ей изменённый шрифт просто в папку положил бы. К счастью, хоть название шрифта записано в защищённом ЕХЕ, но вызов функции находится в DLL, файл которой можно изменять. Наткнулся на интересную статью по решению подобных проблем, но мне сложно понять где в данном случае этот параметр отвечающий за набор символов находится. ![]() Сама библиотека. Взломанную игру долго искал и качал пару дней, если нужна, то могу поделиться (на ХР не идёт). Буду признателен, если кто-нибудь сможет подсказать какой байт исправить с 0 на 1, чтобы изменить набор символов перед вызовом функции. В перспективе это может пригодиться для других игр, например, «Little Big Adventure Enhenced Edition» сделана с использованием этой библиотеки, но эта игра вроде системные шрифты не использует. |
![]() ![]() |
| -=CHE@TER=- |
Jul 13 2016, 10:45
Сообщение
#2
|
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,423 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 327 раз(а) |
Ух, ты!
Первый раз вижу .EXE файл, который реально использует reloc'и! $0054E2F8 => $00B0E2F8 Во всяком случае у меня оно сюда грузится. Проверь у себя - такой же адрес будет или нет. Если нет, то придётся тебе получать адрес, куда загружен процесс, затем прибавлять к нему $0014E2F8 ($0054E2F8 - $00400000), чтобы получить смещение до своей строки. Гугли как можно по ProcessInfo.hProcess или ProcessInfo.dwProcessId (PID) получить HMODULE / HINSTANCE (это как раз адрес загрузки). Я попробовал строчку Arial заменить на Comic - вроде бы, ошибок нет, но и шрифт в меню и Credits не поменялся (во всяком случае на Comic не похож). Возможно, Arial, он везде Arial, а Comic нужно было писать полным именем как "Comic Sans MS", поэтому и не сработало. Но WriteProcessMemory() возвращет True, так что всё отрабатывает без проблем. Кстати, всё забываю сказать - у тебя дескрипторы текут - после ResumeThread() нужно обязательно его закрывать: CloseHandle(ProcessInfo.hThread); Закрытие дескриптора - это не завершение процесса. Спасибо сказали:
|
Siberian GRemlin The Last Express Gold Edition Jun 26 2016, 06:32
-=CHE@TER=- А какие файлы проверяются на целостность игрой?
В ... Jun 26 2016, 09:20
Siberian GRemlin libcocos2d.dll не проверяется на целостность. Заче... Jun 26 2016, 10:18
-=CHE@TER=- Если не проверяется, то ок.
Попробуй, пока что, та... Jun 26 2016, 11:22
Siberian GRemlin Печально, но ни один из вариантов не помог. Может ... Jun 26 2016, 12:12
-=CHE@TER=- Печально, но ни один из вариантов не помог. Может ... Jun 26 2016, 13:00
Siberian GRemlin Никогда не занимался этим. Пункты 1 и 3 сделал. Во... Jun 26 2016, 16:45
-=CHE@TER=- Это просто адрес кода. Его можно посмотреть в HIEW... Jun 26 2016, 18:28
Siberian GRemlin Не мог понять почему читается левое значение. Сдел... Jun 27 2016, 06:22
-=CHE@TER=- Не пробовал свою программу от имени администратора... Jun 27 2016, 13:02
Siberian GRemlin Ошибка — 299.
var
StartUpInfo: TStartUpInfo... Jun 28 2016, 10:59
-=CHE@TER=- Хм. Интересно, как он может быть выполнен частично... Jun 28 2016, 15:57
Siberian GRemlin Попробуй добавить флаг отладки при создании процес... Jun 28 2016, 16:45
-=CHE@TER=- Ошибка та же, но игра не запускается. То есть сам ... Jun 29 2016, 09:32
Siberian GRemlin Можешь исполняемый файл игры вместе со всеми необх... Jul 12 2016, 19:49
Siberian GRemlin Если кому-то интересно, ничего из описанного выше ... Mar 19 2018, 14:52![]() ![]() |
| Упрощённая версия | Сейчас: 18th March 2026 - 19:47 |