IPB

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

> The Last Express Gold Edition, набор символов шрифта
Siberian GRemlin
Jun 26 2016, 06:32
Сообщение #1


Advanced Member
***

Группа: CTPAX-X
Сообщений: 533
Регистрация: 4-February 08
Пользователь №: 2
Спасибо сказали: 221 раз(а)



«Золотое издание» это старая игра адаптированная под современные системы, к сожалению «ХР» не поддерживается. Возникла проблема с отображением субтитров. Хоть текст изначально закодирован двумя байтами, но игра отбрасывает первый байт и использует только второй. Причём выводит только западноевропейскую латиницу. Проблема в том, что используется системный Arial и это никак нельзя изменить — ЕХЕ проверяет свою целостность, что лицензионная копия, что взломанная. Попробовал сделать грязным способом — добавил нужные коды кириллице, установил шрифт. Он добавился в набор шрифтов, и кириллица стала выводиться вместо доп. латиницы и в игре и в системе, а значит везде. Шрифт теперь можно удалить только из-под другой ОС, что очень плохо.

И, да, я проверил через «Process Monitor» — игра не обращается к arial.ttf напрямую, а через системную API его загружает. В противном случае я ей изменённый шрифт просто в папку положил бы.

К счастью, хоть название шрифта записано в защищённом ЕХЕ, но вызов функции находится в DLL, файл которой можно изменять. Наткнулся на интересную статью по решению подобных проблем, но мне сложно понять где в данном случае этот параметр отвечающий за набор символов находится.



Сама библиотека. Взломанную игру долго искал и качал пару дней, если нужна, то могу поделиться (на ХР не идёт).

Буду признателен, если кто-нибудь сможет подсказать какой байт исправить с 0 на 1, чтобы изменить набор символов перед вызовом функции. В перспективе это может пригодиться для других игр, например, «Little Big Adventure Enhenced Edition» сделана с использованием этой библиотеки, но эта игра вроде системные шрифты не использует.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов
-=CHE@TER=-
Jun 28 2016, 15:57
Сообщение #2


Walter Sullivan
***

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



QUOTE
C:\>net helpmsg 299

Запрос ReadProcessMemory или WriteProcessMemory был выполнен только частично.
Хм. Интересно, как он может быть выполнен частично?

У структуры "StartUpInfo" обязательное только поле "cb", остальное можно игнорировать (тем более, что ты флаги заполнил, а связанные с ними структуры - нет и не используешь).

Погуглил на скорую руку с запросом:
CreateProcess CREATE_SUSPENDED readprocessmemory ERROR_PARTIAL_COPY 299

Вот чего нашёл:
_ttps://forum.antichat.ru/threads/97043/

Попробуй добавить флаг отладки при создании процесса (похоже, что под Vista и выше прав нехватает):
..., CREATE_SUSPENDED or DEBUG_PROCESS, ...

Ещё проверь что у тебя VirtualProtectEx() возвращает:

SetErrorCode(0);
if (VirtualProtectEx(...) = false) then writeln('VPE_error: ',GetLastError);

Возможно, как-то ещё придётся себе права поднимать. Пока что попробуй так.
И я так и не получил ответы на свои вопросы выше:
1) Игра в Program Files стоит? Если да - попробуй скопировать исполняемый файл игры и все необходимые ему бибилиотеки в какой-нибудь другой каталог и запусти патч оттуда. Если чтение памяти проканает, значит надо с правами в Program Files разбираться.
2) От имени администратора свой патч пробовал запускать?
3) А в режиме совместимости Windows XP или 98?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Siberian GRemlin
Jun 28 2016, 16:45
Сообщение #3


Advanced Member
***

Группа: CTPAX-X
Сообщений: 533
Регистрация: 4-February 08
Пользователь №: 2
Спасибо сказали: 221 раз(а)



QUOTE(-=CHE@TER=- @ Jun 28 2016, 22:57) *
Попробуй добавить флаг отладки при создании процесса (похоже, что под Vista и выше прав нехватает):
..., CREATE_SUSPENDED or DEBUG_PROCESS, ...
Ошибка та же, но игра не запускается. То есть сам процесс запускается, но после readln завершается, если верить диспетчеру задач.

QUOTE(-=CHE@TER=- @ Jun 28 2016, 22:57) *
Ещё проверь что у тебя VirtualProtectEx() возвращает:
487.

QUOTE(-=CHE@TER=- @ Jun 28 2016, 22:57) *
1) Игра в Program Files стоит? Если да - попробуй скопировать исполняемый файл игры и все необходимые ему бибилиотеки в какой-нибудь другой каталог и запусти патч оттуда. Если чтение памяти проканает, значит надо с правами в Program Files разбираться.
Никогда не устанавливаю игры в Program Files. Под игры отдельная папка.

QUOTE(-=CHE@TER=- @ Jun 28 2016, 22:57) *
2) От имени администратора свой патч пробовал запускать?
Я и так являюсь администратором. Но запустил через пункт в выпадающем меню от имени админа — ошибки те же.

QUOTE(-=CHE@TER=- @ Jun 28 2016, 22:57) *
3) А в режиме совместимости Windows XP или 98?
У чего и зачем? Игре совместимость не нужна, моей проге тоже.

Кстати, у меня «Windows 7».
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Jun 29 2016, 09:32
Сообщение #4


Walter Sullivan
***

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



QUOTE(Siberian GRemlin @ Jun 28 2016, 16:45) *
Ошибка та же, но игра не запускается. То есть сам процесс запускается, но после readln завершается, если верить диспетчеру задач.
Походу если игру пытаются дебажить, она закрывается. Антиотладочный механизм, скорее всего. А, возможно (не разбирался), и саму программу Windows завершает после того как завершил работу отладчик - поробуй readln после ResumeThread() сунуть.

QUOTE(Siberian GRemlin @ Jun 28 2016, 16:45) *
487
Набираем в командной строке Windows и видим:
QUOTE
C:\>net helpmsg 487

Попытка обращения к неверному адресу.
Отсюда понятно, почему она прочитать не может.
Ты точно адрес верно указал?
Возможно, конечно, тоже какие-то антиотладочные механизмы...
А! Вот ещё что хотел узнать: игра 32 или 64 бита? У ней может быть два экзешника и если ты пытаешься править 64-ый из 32-ой программы, то я не уверен, будет ли такой финт ушами работать вообще...
Можешь исполняемый файл игры вместе со всеми необходимыми библиотеками куда-нибудь залить поглядеть (надеюсь это всё не занимает сотни мегабайт)?

QUOTE(Siberian GRemlin @ Jun 28 2016, 16:45) *
Никогда не устанавливаю игры в Program Files. Под игры отдельная папка.
Это ты молодец, но я таких подробностей не знал, поэтому и спросил.

QUOTE(Siberian GRemlin @ Jun 28 2016, 16:45) *
Я и так являюсь администратором. Но запустил через пункт в выпадающем меню от имени админа — ошибки те же.
Понятно, жаль.

QUOTE(Siberian GRemlin @ Jun 28 2016, 16:45) *
У чего и зачем? Игре совместимость не нужна, моей проге тоже.
Кстати, у меня «Windows 7».
Дело не в том нужна или не нужна совместимость, а в том что при её использовании Windows закрывает глаза на некоторые вещи, которые при обычном раскладе молча и сурово рубит. Эмулируется множество всяких костылей, часть из которых, возможно, поможет хаку сработать. Т.к. хрен знает из-за чего оно не работает, я и пытаюсь нащупать направление в котором может хоть что-то сдвинется с мёртвой точки.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Siberian GRemlin
Jul 12 2016, 19:49
Сообщение #5


Advanced Member
***

Группа: CTPAX-X
Сообщений: 533
Регистрация: 4-February 08
Пользователь №: 2
Спасибо сказали: 221 раз(а)



QUOTE(-=CHE@TER=- @ Jun 29 2016, 16:32) *
Можешь исполняемый файл игры вместе со всеми необходимыми библиотеками куда-нибудь залить поглядеть (надеюсь это всё не занимает сотни мегабайт)?
Вот.


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Сообщения в этой теме
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
-=CHE@TER=-   Ух, ты! Первый раз вижу .EXE файл, который реа...   Jul 13 2016, 10:45
Siberian GRemlin   Если кому-то интересно, ничего из описанного выше ...   Mar 19 2018, 14:52


Reply to this topicStart new topic
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 28th March 2024 - 10:39