| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Как различить пакеты ? |
| Автор: SharedNoob 25.6.2007, 13:39 |
| Доброго времени суток. Пишу Античит для сетевой игры. Есть локальная сеть, допустим IP адрес компьютера игрока 192.168.0.2 , а ip сервера игры 192.168.0.1. Далее так. Запускается клиент игры, пакеты которого я направляю на клиент античита то есть на 192.168.0.2:6661, Клиент античита перенаправляет пакеты на сервер античита 192.168.0.1:7771, Сервер античита проверяет IP с которого присланы пакеты, если Ip разрешено(или к примеру не запрещено) подключатся к серверу игры то он перенаправляет пакеты на порт сервера игры 192.168.0.1:4444, иначе откидывает эти пакеты. Далее я думал что чит посылает пакеты непосредственно на порт сервера, и я начал шифровать пакеты, при этом следя за тем что бы пакеты были посланны именно клиентом античита, для этого я изменял пакет и добалял к нему несколько символов, на стороне сервера античита я проверял наличие этих символов если есть то возвращаю пакет в иходное состояние и перенаправляб пакет ына порт сервера игры, иначе отбрасываю их. Но как оказалось, чит перехватывает пекеты посланные клиентом игры, сохраняет их у себя и потом начинает их плодить (чем добивается к примеру увиличения в N раз скрорости атаки). Посылает он их по тому же маршруту, что и клиент, то есть читерный пакет тоже проходит и шифровку и расшифровку и в итоге все таки попадает на сервер. Для мапинга пакетов использую Indy IdMappedPortTCP. Подсткажыте как отличить пакеты посланные читом от пакетов посланных клинетом игры НА ЛОКАЛЬНОЙ МАШИНЕ? Зараннее благодарен. |
| Автор: Snowy 25.6.2007, 14:54 |
| Чтобы избавиться от дублирования пакетов, введи порядковый байт-нумератор. То есть каждый следующий пакет должен предворяться байтом, значение которого на 1 выше предыдущего. Когда байт дойдёт до 255, он сбросится в 0 и пойдёт заново. Если чит дублирует пакеты, то он продублирует и байт-нумератор пакета, оставив его прежним. По данному поведению сервер сможет отличить нормальный пакет от дубликата. Подобная система применяется в протоколе ICQ для защиты от записи/воспроизведения пакетов. Добавлено через 1 минуту и 27 секунд ЗЫ. И не забудь закрыть файрволом настоящий порт сервера от доступа извне. |
| Автор: _hunter 25.6.2007, 14:56 |
| перехватывать connect() и send() и смотреть какое приложение шлет пакеты по указанному адресу. если не .exe-шник игры -- то тупо не send-ить. причем еще и проверку контрольной суммы .exe-шника прикрутить придется (чтобы переименование чита не помогло) |
| Автор: SharedNoob 25.6.2007, 15:37 |
| 2Snowy Если бя у меня были исходники игры я бы уже давно изменил пакеты таким образом, но у меня на руках только .exe-шник. 2_hunter Можно поподробнее описать КАК узнать какое приложение пустило этот пакет ? Я копаюсь с этим третий день, ничего не нашел. Я перерыл свойства IdMappedPortTCP 10 раз. Нашол IP скоторого пришол пакет, порт, еще несколько свойств, но как определить какое приложение его послало найти так и не смог. |
| Автор: SharedNoob 25.6.2007, 16:56 |
| |