Проблема запуска клиента после отключения GameGuard и изменения ServerAddr

zheult

Путник
Пользователь
Сообщения
19
Розыгрыши
0
Репутация
0
Реакции
1
Баллы
75
Хроники
  1. Interlude
Исходники
Присутствуют
Сборка
L2J Mobius
Здравствуйте!

Работаю над модификацией клиента Lineage 2 Interlude. Я отключил GameGuard путём редактирования файла core.dll через Hex-редактор — изменил значение переменной ?GL2UseGameGuard@@3HA с 1 на 0. После этого клиент успешно запускается без GameGuard.

Затем я открыл l2.ini и заменил параметр ServerAddr на 127.0.0.1, чтобы подключиться к локальному серверу. Но после этого клиент перестал запускаться — окно не появляется вовсе.

Если заменить dsetup.dll на уже пропатченную версию, то клиент запускается даже после изменения l2.ini. Однако я не хочу использовать готовые патченные файлы. Я хочу сам разобраться, как именно работает патч, и вручную вносить изменения — чтобы понимать, что именно происходит и как это влияет на поведение клиента.

Мои вопросы:
1. Может ли быть, что клиент проверяет цифровую подпись или контрольную сумму l2.ini, и из-за этого он не запускается?
2. Нужно ли использовать какой-то специальный инструмент для декодирования и перекодирования l2.ini, кроме v413 encdec?
3. Есть ли какие-то дополнительные шаги, которые нужно сделать после изменения l2.ini, чтобы клиент запускался?

Буду благодарен за помощь!
 
Решение
да
да

Оригинальный клиент Lineage 2 использует RSA ключ, от которого есть только public часть, только для декодирования содержимого. private часть ключа имеют только корейцы.
По-этому начали патчить чтение RSA ключей с того, который нельзя перезаписывать, на тот - который можно перезаписывать. (имеется ввиду файлы можно подменять). Краткое название "патченного ключа" - v413 encdec

Где-то или в L2.bin / Core.dll / Engine.dll должны лежать ключи...
да
да

Оригинальный клиент Lineage 2 использует RSA ключ, от которого есть только public часть, только для декодирования содержимого. private часть ключа имеют только корейцы.
По-этому начали патчить чтение RSA ключей с того, который нельзя перезаписывать, на тот - который можно перезаписывать. (имеется ввиду файлы можно подменять). Краткое название "патченного ключа" - v413 encdec

Где-то или в L2.bin / Core.dll / Engine.dll должны лежать ключи.

Оригинальные:
Код:
97df398472ddf737ef0a0cd17e8d172f0fef1661a38a8ae1d6e829bc1c6e4c3cfc19292dda9ef90175e46e7394a18850b6417d03be6eea274d3ed1dde5b5d7bde72cc0a0b71d03608655633881793a02c9a67d9ef2b45eb7c08d4be329083ce450e68f7867b6749314d40511d09bc5744551baa86a89dc38123dc1668fd72d83
+
Код:
(какое-то число нулей)35
413 патченный:
Код:
75B4D6DE5C016544068A1ACF125869F43D2E09FC55B8B1E289556DAF9B8757635593446288B3653DA1CE91C87BB1A5C18F16323495C55D7D72C0890A83F69BFD1FD9434EB1C02F3E4679EDFA43309319070129C267C85604D87BB65BAE205DE3707AF1D2108881ABB567C3B3D069AE67C3A4C6A3AA93D26413D4C66094AE2039
+
Код:
(какое-то число нулей)1d

Так что или делать екстендер, или вручную где-то выискивать и менять "оригинальный" на "Патченный" с сохранением размеров полей;
 
Решение
понял, просто если заменить dsetup.dll на уже пропатченную версию, то клиент запускается даже после изменения l2.ini
что я должен сделать что бы все работал?

я посмотрел исходники dsetup там делаеть то же самое изменяеть
Код:
bool DisableGameGuard(void)
{...
GL2UseGameGuard = (unsigned char *) GetProcAddress(LoadLibraryA("core.dll"), "?GL2UseGameGuard@@3HA");
 
просто если заменить dsetup.dll на уже пропатченную версию
Так что или делать екстендер


что я должен сделать что бы все работал?


Видимо ключ находится тоже в Core.dll.
Ищите или как подцепиться к функции - или через условную IDA - ищите сам ключ и через hex меняйте его.
 
а как dsetup.dll делает ? там про ключа ничего нет просто вырубает GG и все, а когда это делаю я через HEX editor не работает
Я правильно понял? если изменить core.dll, то код изменится и из-за несоответствия он перестанет работать?
 
а как dsetup.dll делает ?
Ну екстендером делает.
Вы даже код приложили как это делает dsetup
bool DisableGameGuard(void)
{...
GL2UseGameGuard = (unsigned char *) GetProcAddress(LoadLibraryA("core.dll"), "?GL2UseGameGuard@@3HA");


там про ключа ничего нет просто вырубает GG и все
ну вы же сами сказали
я вам сказал в сторону чего смотреть За ручку не проведу, тут уж извините.
Если забыли в сторону чего смотреть - ссылка на пост вот - https://mmo-dev.info/threads/Пробле...uard-и-изменения-serveraddr.33237/post-256985
 
все понятно, менял ключ в core.dll и l2.exe все сработало, благодарю
 
Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше…