Предотвращение обратного инжиниринга исходного кода игры Java с использованием модели клиент-сервер - PullRequest
2 голосов
/ 06 января 2011

Я ищу способы предотвратить взлом игры, созданной на Java, такой как runescape, используя модель клиент-сервер для хранения важного исходного кода на сервере и отправки данных клиенту.Мой вопрос заключается в том, как можно было бы сделать что-то подобное, любые информационные ссылки или статьи были бы полезны.

Мне также интересно, какую информацию кто-то может отправлять с сервера, который также может быть представлен в3d графический движок, или как это сделать?

Ответы [ 4 ]

4 голосов
/ 06 января 2011

Вы ничего не можете сделать с декомпилируемым клиентом - вы можете запутать свой исходный код, чтобы сделать его более трудным для обратного проектирования.Это сделает получение читаемого исходного кода немного сложнее, но не невозможно.Решительный и опытный пользователь может все же перепроектировать клиента.

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

На самом деле эти видырасчеты должны быть выполнены на сервере в любом случае, чтобы поддерживать целостность игры и предотвратить обман клиентов.

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

3 голосов
/ 06 января 2011

Мне также интересно, какую информацию кто-то может отправить с сервера, который также может быть отображен в 3D-графическом движке, или как это делается?

Пока яЯ не разработчик игр / 3D, я нашел эту статью освещающей (просмотрите их вики для получения дополнительной информации!)

Сетевая многопользовательская сеть [valveoftware.com]

2 голосов
/ 06 января 2011

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

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

0 голосов
/ 06 января 2011

Теория клиент-сервер в теории может предотвратить многие виды мошенничества, только посылая конкретную информацию между ними, в частности входные данные от игрока и представление игроков об игре с сервера.

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

Модель клиент-сервер также мало что делает для хаков с макро-действиями. Игроки могут взломать своих клиентов, чтобы повторить действия или помочь действиям (таким как прицеливание). Некоторая другая информация может быть воссоздана на взломанном клиенте из информации, предоставленной сервером.

Рендеринг самой 3D-сцены делится на три лагеря.

  1. Однако каждый клиент может сделать это они чувствуют. Неважно, если вы использовать меч качели A или меч качели B если они не взаимодействуют по-разному с окружающей средой.
  2. Клиенты могут сделать правильное предположение, и, если они ошибаются, им придется помириться. Я теряю связь на 2 секунды. Мой персонаж продолжает работать на вашем экране, потому что ваш клиент предполагает, что это то, что я буду делать. Я воссоединяюсь, но я сказал клиенту повернуться. Либо я прыгаю на ваш экран, либо на мой.
  3. Сервер решает. Сервер сообщает, что ствол падает по алгоритмическому пути C. Это наиболее распространено, когда падающий ствол взаимодействует с окружающей средой, то есть может поразить и повредить другие вещи.
...