Предотвращение читов с помощью генерации кода

Будет ли эта анти-читерская техника работать для многопользовательской игры с использованием частных серверов (общеизвестный исполняемый файл):

Когда клиент запускает игру, он автоматически обновляется ежедневно (с помощью программы запуска). Серверы тоже обновятся.
Если нет реального патча, обновление состоит только из изменений в структуре памяти игровых объектов, сетевого кода и шейдеров.
Это делается с помощью автоматизированной системы, которая автоматически генерирует и рандомизирует (C ++) классы.
Возможно, он также может добавить поддельные объекты в иерархию, чтобы затруднить идентификацию объектов.

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

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

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

Есть ли хорошие способы сделать это? Это работает против автоматического взлома?

5

Решение

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

Есть два способа, которыми люди могут мошенничать:

  1. Получение информации, которой другие не имеют (например, просматривая стены)
  2. Автоматизация игрового процесса, который другие должны делать вручную («фермерство»)

Есть ровно два способа, которыми вы можете удержать людей от этого:

  1. Прекратите давать эту информацию клиенту. Держите это на сервере.
  2. Прекратите иметь части своей игры, которые не являются забавой. Люди только автоматизируют скучные части, они не играют в скучную игру. Сделайте это забавным, и никто не будет тратить свое время на его автоматизацию. Если всплывет автоматизация вашей игры, подумайте, как вы можете улучшить свою игру, а не сражаться с ботами технологически.

Помните старую поговорку: «Клиент в руках врага».

8

Другие решения

Я не знаю, будет ли такая система успешной, чтобы избежать мошенничества, но у меня были бы проблемы с производством и обслуживанием такой системы. Например, вы говорите

Это делается с помощью автоматизированной системы, которая автоматически генерирует и
рандомизирует (C ++) классы. Может быть, это также может добавить поддельные объекты к
иерархия, чтобы сделать идентификацию объектов сложнее.

  • Что вы подразумеваете под рандомизацией класса? Это далеко не тривиально.
  • Поддельные объекты в конечном итоге будут обнаружены (мертвый код)

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

4

По вопросам рекламы [email protected]