2012-02-14 3 views
5

Недавно я сделал простую игру, в которой пользователь может представить свои результаты в Интернете. Очень легко взломать игру, увеличив высокий балл, используя программное обеспечение, такое как Cheat Engine. Высокий балл хранится в целочисленном размере. Должен ли я хранить зашифрованный высокий балл вместо целого числа и расшифровать его для показа в игре?Против взлома игры - лучшие практики, предложения

Мне было интересно, какие лучшие практики, так как я новичок в этих вещах (взлома).

+1

Вам придется запускать игру на своем собственном сервере и передавать только сообщение I/O клиенту, чтобы предотвратить их подрыв правил. –

+1

Выполнение программы на заблокированном сервере является единственным 100% способом. Для вещей на машине пользователя, либо проверяйте все результаты, либо не беспокойтесь о каких-либо анти-хакерах. –

ответ

5

Этот вопрос более в Gamedev SE имеет то, что вы ищете:

https://gamedev.stackexchange.com/questions/4181/how-can-i-prevent-cheating-on-global-highscore-tables

Другая дискуссия по SO о теме: Suggestions for (semi) securing high-scores in Flash/PHP game

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

+0

Да, как говорится в первой ссылке. Создайте простой набор правил, который воспроизводится на обеих машинах. Даже тогда вам приходится беспокоиться об двигателях AI (например, шахматы и задние гаммы), поэтому, вероятно, будет более приятным взять простой набор правил и немного согнуть его, чтобы сломать установленные боты. – John

+0

Я, вероятно, недостаточно прояснился. Меня больше интересует чистая сторона. Единственное ограничение, которое я могу сделать на сервере, - это то, что высокие баллы достаточно высоки, чтобы попасть в список, но принесите определенное значение.Используя программное обеспечение, такое как Cheat Engine, я могу изменить значение высокой оценки в памяти, и оно будет действительным для игры, и оно будет отправлено на сервер. Должен ли я делать дополнительные проверки в игре, например: я убил 45 врагов, каждый враг наносит 10 очков, что составляет 450 очков. Если значение точек! = 450, сбросьте счет до 450. Скажите, нужна ли вам дополнительная информация. – TomazVovk

+0

Nevermind, 2-я ссылка была той, которую я искал. Не прочитал это, так как я немного устал. Благодаря! – TomazVovk

-1

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

Суть исследования безопасности заключается в том, чтобы иметь возможность делиться секретом над эфиром (сетью). По сути, обе стороны должны знать, как кодировать/декодировать сообщения, но метод для этого должен храниться в секрете от «Человек в середине».

Я бы назвал книгу Таненбаума по телефону Internetworks или посмотрел на "Trusted Computing Module".

+3

Что делать, если я присоединяю отладчик и изменяю значение, отправляемое в память, прежде чем он зашифруется? –

+0

@MattiVirkkunen: Тогда я бы назвал вас мужчиной посредине. – John

+0

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

Смежные вопросы