Pull to refresh

Сжатие пакетов и защита С# клиента с открытым исходным кодом

Reading time 2 min
Views 2.6K
Привет, сообщество.

Мой путь в программировании: ASP VB script >> VB.Net >> C#, с С и С++ я знаком минимально.
С давних пор пишу онлайн RPG (около 9 лет) и сейчас дошел до стадии публичного онлайн тестирования.

Клиентская часть написана на С# и доступна для изучения(улучшения) всеми желающими.
У меня нет никакой паранойи (надеюсь ;-)) относительно хакеров и любителей поломать чужие сервера — я отлично понимаю, что никому нет дела до моих исходников, однако мне хочется, чтобы на сервер отсылались пакеты, обработанные только известной, проверенной и утверждённой версией клиента.
Поэтому я хочу реализовать защиту в виде подключаемой приватной нативной библиотеки, которая будет отсылать на сервер хеш код используемого клиента, плюс она-же будет шифровать/дешифровать/сжимать/разжимать все пакеты. То есть если в клиенте реализуют отсылку фиктивного хешь кода, без использования нативной DLL, то злоумышленнику также придется реализовать свою версию обработки пакетов.

У меня есть несколько вопросов:
1. Правильный ли это метод зашиты клиента? Может быть есть какие-то готовые актуальные методы, реализующие такую задачу.
2. Сложно ли будет исследовать нативную DLL для реализации своего обработчика- тоетсь насколько высок порог вхождения для этого.

В игре ожидаются очень массовые замесы, поэтому, как мне кажется, крайне важно минимизировать трафик в обе стороны. Для сериализации всех объектов используется «ручной» метод в байт код без избыточности (то есть в нем только значимые байты) + я хочу сжимать числа по VLQ алгоритму rosettacode.org/wiki/Variable-length_quantity + поверх ZIP сжатие.
Вопрос:
3. Имеет-ли смысл использзовать VLQ, ZIP и заморачиваться написанием нативной С DLL (напомню, я практически не знаком с этим языком) для обработки пакетов, и даст ли это ощутимый выигрыш в произодительности.

PS — как перенести это сообщение в вопросы?
Tags:
Hubs:
+4
Comments 15
Comments Comments 15

Articles