Как сервер может обнаружить недействительного клиента

Как может сервер, то есть удаленный хост, выступающий в качестве центральной службы для нескольких клиентов, обнаруживать вредоносных или недействительных клиентов, подобных Blizzard Warden. В каком-то смысле эти виды программного обеспечения время от времени запрашивают у клиента определенную информацию, которую нелегко подделать у неофициального клиента.

Что меня интересует, так это то, как такой механизм может быть реализован так, чтобы было трудно или невозможно провести обратный инжиниринг со стороны клиента? Существует ли такая техника для клиентского программного обеспечения с открытым исходным кодом (сервер с закрытым исходным кодом)?


person wondering    schedule 18.11.2014    source источник


Ответы (1)


Краткий ответ: вы не можете. Клиент принципиально ненадежен. Blizzard (и другие поставщики античитерского программного обеспечения) вовлечены в постоянную гонку вооружений с читерами. Вы не можете просто реализовать это один раз и покончить с этим; вы должны постоянно отслеживать свой продукт (либо эвристически, либо через отчеты игроков) на предмет мошенничества, а затем выяснять, как программно оценить, обманывает ли кто-то.

Более длинный ответ заключается в том, что вы держите обнаружение «секретного соуса» подальше от клиента; вместо этого клиент просто собирает информацию, которую пересылает на доверенную машину для анализа. Из-за этого мошенникам будет труднее избежать обнаружения, поскольку они знают только, какая информация собирается, а не что с ней делают. Однако в конце концов они поймут, как подделать эту информацию, и ваш античитерский механизм должен будет решить эту проблему.

Что вы можете сделать, так это реализовать эвристику в коде вашего сервера, чтобы обнаруживать игроков, отправляющих входные данные, которые в противном случае были бы невозможны, а затем помечать эти учетные записи для проверки или блокировки. Это не позволяет обнаружить вредоносное программное обеспечение на клиенте, но может обнаружить воздействие этого вредоносного программного обеспечения. Таким образом, хотя вы не сможете точно определить, что отправляет эти недопустимые данные, вы все равно можете действовать без учетной записи.

Однако, если говорить более конкретно о вашем вопросе, невозможно привести примеры, потому что вы должны определить, что представляет собой «обман» в контексте вашего приложения, а затем методы устройства для его обнаружения. Это очень специфичная для предметной области проблема, и, чтобы сделать ее более сложной, вы вряд ли найдете реализации таких систем с открытым исходным кодом, потому что они обязательно полагаются на неизвестность для обнаружения мошенников.

person Chris Heald    schedule 18.11.2014
comment
Спасибо, вы натолкнули меня на многообещающие идеи! - person wondering; 21.11.2014