Защита состоит из клиентской и серверной части. Реализовано шифрование трафика от клиента на сервер. Проверка игрового клиента(защита от OOG бота).
Защита написана в VS2008. Использовался boost 1_55_0.
Как запустить и проверить работу.
1.Нужен чистый клиент GF (83 протокол).
2.Копируем в папку system ProxyConnector.exe (можно взять готовый из папки Release) и AddNetQueue.dll(можно взять готовый из проекта AddNetQueue).
Либо можно собрать самому( нужна библиотека boost 1_55).
3.l2.ini устанавливаем адрес сервера 83.137.50.6(готовый сервер с поднятой защитой). Либо настроить для своего сервера ( об этом ниже).
4.Запускаем ProxyConnector.exe с правами админа . Появлется окно консоли
5.Через несколько секунд запускается клиент Lineage.
6.Логинимся (вводим любой логин и пароль).Входим в выбор сервера.Заходим.
7. Если все прошло нормально.
8. Либо защите не нравится клиент.
9. ProxyConnector.exe должен запускаться с правами админа.
Как это работает.
L2.exe ---->(шифрован) 127.0.0.1 port 9992 ProxyConnector.exe --->(шифрован) 83.137.50.6 port 7779( закрыть файрволом 7777) ServerConnector
ServerConnector ---->(открыт*) 127.0.0.1 7777 L2Server
открыт*- стандартное "шифрование" пакетов геймсервера
Краткое описание.
Логин сервер должен отдавать адрес геймсервера 127.0.0.1 порт 9992(либо другой ).
ProxyConnector.cpp ListenerGamePortServer gps("127.0.0.1", "9992", io_service); открываем слушающий порт (127.0.0.1 порт 9992)
клиент коннектися создается сессия.данные перенаправляются туда .Шифруем что надо (пакет CryptInit,т.к. без него расшифровать трафик не сможем)
Инжектим в память процесса AddNetQueue.dll расшифровываем пакет CryptInit.
GamePortSession.cpp
void GamePortSession::start()
{
const std::string remote_ip="83.137.50.6"; // куда слать пакеты
const std::string remote_port="7779";
.....
}
ServerConnector все аналогично ProxyConnector.Принимаем и расшифровываем пакет CryptInit. Отдаем пакеты L2Server.
Сам ключ шифрования (В ServerConnector и ProxyConnectorдолжны быть одинаковые)
char guard_key[16] = {
0xe1, 0x47, 0x7b, 0xa7,
0x42, 0x33, 0xf6, 0x59,
0xc1, 0x75, 0x77, 0x15,
0x51, 0xd3, 0x47, 0x1c
};
Защита написана в VS2008. Использовался boost 1_55_0.
Как запустить и проверить работу.
1.Нужен чистый клиент GF (83 протокол).
2.Копируем в папку system ProxyConnector.exe (можно взять готовый из папки Release) и AddNetQueue.dll(можно взять готовый из проекта AddNetQueue).
Либо можно собрать самому( нужна библиотека boost 1_55).
3.l2.ini устанавливаем адрес сервера 83.137.50.6(готовый сервер с поднятой защитой). Либо настроить для своего сервера ( об этом ниже).
4.Запускаем ProxyConnector.exe с правами админа . Появлется окно консоли
5.Через несколько секунд запускается клиент Lineage.
6.Логинимся (вводим любой логин и пароль).Входим в выбор сервера.Заходим.
7. Если все прошло нормально.
8. Либо защите не нравится клиент.
9. ProxyConnector.exe должен запускаться с правами админа.
Как это работает.
L2.exe ---->(шифрован) 127.0.0.1 port 9992 ProxyConnector.exe --->(шифрован) 83.137.50.6 port 7779( закрыть файрволом 7777) ServerConnector
ServerConnector ---->(открыт*) 127.0.0.1 7777 L2Server
открыт*- стандартное "шифрование" пакетов геймсервера
Краткое описание.
Логин сервер должен отдавать адрес геймсервера 127.0.0.1 порт 9992(либо другой ).
ProxyConnector.cpp ListenerGamePortServer gps("127.0.0.1", "9992", io_service); открываем слушающий порт (127.0.0.1 порт 9992)
клиент коннектися создается сессия.данные перенаправляются туда .Шифруем что надо (пакет CryptInit,т.к. без него расшифровать трафик не сможем)
Инжектим в память процесса AddNetQueue.dll расшифровываем пакет CryptInit.
GamePortSession.cpp
void GamePortSession::start()
{
const std::string remote_ip="83.137.50.6"; // куда слать пакеты
const std::string remote_port="7779";
.....
}
ServerConnector все аналогично ProxyConnector.Принимаем и расшифровываем пакет CryptInit. Отдаем пакеты L2Server.
Сам ключ шифрования (В ServerConnector и ProxyConnectorдолжны быть одинаковые)
char guard_key[16] = {
0xe1, 0x47, 0x7b, 0xa7,
0x42, 0x33, 0xf6, 0x59,
0xc1, 0x75, 0x77, 0x15,
0x51, 0xd3, 0x47, 0x1c
};
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
Последнее редактирование: