Не знаю, возможно не в ту тему, но собственно вопрос не конкретный, скорее обсуждение, поэтому кину сюда. Требуется совест знающих людей (возможно кто ни будь с чем-то подобным сталкивался). Есть онлайн-игра. Работает соответственно клиент-сервер. Необходимо создать систему защиты, которая должна включать в себя: Шифрование пакетов, а именно защита от ботов (т.е. шифрование пакетов на оригинальном клиенте и отправка их на другой порт сервера, где пакеты дешифруются и затем уже обрабатываются сервером). Примерная схема: Без защиты: клиент----->сервер (порт 1000) С защитой: клиент----->сервер/расшифровка (порт 2000)---->сервер (порт 1000) Причем пакеты не должны приниматься напрямую на 1000 порт. +Планируется обновление алгоритмоа шифрования пакетов время от времени (примерно раз в месяц) Защита от изменений оригинального exe-файла, защита от отладки и т.п. Защита от "двуоконности", т.е. запуска нескольких копий игры на 1 компьютере. Причем необходимо, чтобы отлавливались и попытки запуска на VM и например в песочнице (Sandboxie). Платформа, конечно, Win. Собственно вопрос: Что из этого реально сделать и какими способами будет рациональнее. И сколько будет стоить, если делать не самостоятельно. Заранее спасибо.
1) шифрование: шифровать пакеты нет смысла, разве что только от перехвата а для защиты проще использовать древний трюк. сервер реализует множество команд A1...An, из которых клиент ver 1.0 реализует некоторое подмножество из него, например, A1, A3, A7, A8, A11, A13, A69. После чего выходит следующая версия клиента, которая использует более полное подмножество команд, добавляя к своему словарю A2, A4, A5, A6. старые версии клиента просто не будут знать, что делать с этими командами, а сервер их им посылает. ну, например, команда A1 передает тип и координаты игрового объекта, только одного за раз, а A2 позволяет передать все видимые объекты с их координатами одним махом. ну или просто синтаксис у них разных. соль в том, что в клиентском коде будет только некоторое _подмножество_ команд, поддерживаемых сервером и хакер не сможет расшифровать полный протокол и с выходом новой версии бота ему придется трахаться с реверсингом протокола обмена вновь. 2) отлов нескольких одновременно запущенных копий: в общем случае реализовать это нельзя, т.к. VMWare может поиметь доступ к Ethernet и выглядеть как еще один узел в сети, висящей на соседней машине. ну вообще-то, учитывая, что VMWare позволяет определять некоторые (достаточно многие) параметры физической машины, но в принципе можно отлавливать две и более копий, работающих на одной машине, только геморрой это большой. лучше детектить саму VMWare (есть куча способов для этого от которых даже не спасают патчи, предназначенные для антидетекта - достаточно попробовать записать что-то в RMS-регистр типа TSC, и сравнить его поведение под живой машиной и варей), но тут могут возмутиться, если клиента будет нельзя пускать под варей. если есть какие-то вопросы по реализации, то готов их с тобой обсудить. что-то подобное я уже писал, только там были более жесткие требования, в частности, защита от виртуализатора Server 2008, никсовых виртуализаторов и т.д., которых до фига и которых хрен одним махом отловишь.
microSD а зачем таким хемором вообще заниматься)?? - типа защита от договорных матчей). этот вопрос решается просто: игроки формируют банк, часть бабок банка идёт сервису на его доход и какие-то расходы, а оставшаяся сумма идёт винеру. защита от инсинуаций аля читер решается логом на сервере.