Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
A_Kamolins
4 / 4 / 4
Регистрация: 15.08.2014
Сообщений: 30
#1

Защита 2д онлайн игры от взломов - C++

18.08.2014, 17:57. Просмотров 1067. Ответов 10
Метки нет (Все метки)

Здравствуйте, вообщем, я пытаюсь написать 2д рпг онлайн игру, которую в будущем хотелось бы переделать под андроид и выпустить в маркет, но речь не об этом. На данный момент игра реализована как обычная 2д рпг. Позже переделаю её под клиент, который будет общаться с сервером и все необходимые данные будут заноситься сервером в БД.
Больше всего беспокоюсь по поводу защиты. В принципе, уже реализовал обычный клиент и сервер, которые способны общаться между собой и пакеты шифруются с помощью TLS криптографии, что, надеюсь, защитит меня в дальнейшем от подмены пакетов. Хотелось бы услышать некоторые правила, которых мне стоит придерживаться, чтобы игра была как можно более безопасной. Как защищаться от Cheat Engine? (На данный момент, когда она обычная рпг - очень легко нарисовать себе кучу денег или сделать себя бессмертным, используя CheatEngine) Поможет ли моя асимметричная криптография от подмены пакетов? Что бы вы ещё могли посоветовать?

Добавлено через 4 минуты
Так же, может кто-то имел дело с защитой от брута и различных дос/ддос атак. Я понимаю, что если я что-то строю в клиент/сервер, то оно от этого особо не спасет, но может даст хоть какой-то толк от не очень опытных людей.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2014, 17:57     Защита 2д онлайн игры от взломов
Посмотрите здесь:
Как написать бот для онлайн игры C++
C++ код сервера и клиент для онлайн игры
Защита const C++
C++ Защита от дизассемблера
Защита от дизассемблирования C++
C++ Защита программы
C++ Защита DLL
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 1
18.08.2014, 19:08     Защита 2д онлайн игры от взломов #2
Цитата Сообщение от A_Kamolins Посмотреть сообщение
Поможет ли моя асимметричная криптография от подмены пакетов?
Не поможет.

Цитата Сообщение от A_Kamolins Посмотреть сообщение
Что бы вы ещё могли посоветовать?
Клиента изначально следует считать полностью скомпрометированным. Пакеты подменят, переменные найдут, расшифруют и перепишут, исполняемые файлы декомпилируют, исправят и скомпилируют обратно, в общем, всё сломают. Поэтому всё считать на сервере, все приходящие от клиента данные строго проверять.
A_Kamolins
4 / 4 / 4
Регистрация: 15.08.2014
Сообщений: 30
18.08.2014, 19:47  [ТС]     Защита 2д онлайн игры от взломов #3
Nick Alte, и что же вы бы посоветовали в качестве защиты от подмены пакетов?
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 1
18.08.2014, 19:54     Защита 2д онлайн игры от взломов #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я же и говорю - необходимо, чтобы вообще любое содержимое пакетов не давало возможности надуть себе нечестное преимущество. Процесс геймплея клиенту не доверять, только управляющие воздействия. Приходящую от клиента информацию тщательно проверять - не добавил ли он чего-то лишнего, не прыгнул ли внезапно в другой конец карты и т.п.
Желательно создать специализированные обёртки над типами данных и систему микс-инов или стратегий, которые позволяют задавать ограничения на взаимодействие (защита от "ухода в минус" и переполнения, например), чтобы не делать ручные проверки повсюду.
Sneles
0 / 0 / 1
Регистрация: 10.07.2014
Сообщений: 5
19.08.2014, 21:02     Защита 2д онлайн игры от взломов #5
Можно посмотреть на ваш проект? Сам очень давно мечтаю сделать свою 2D PRG
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
20.08.2014, 00:19     Защита 2д онлайн игры от взломов #6
Цитата Сообщение от A_Kamolins Посмотреть сообщение
Nick Alte, и что же вы бы посоветовали в качестве защиты от подмены пакетов?
Допустим есть игрок, и у него есть набор действий. И он хочет, например, купить какой то item. Все что происходит на клиенте - это передача серверу 2 вещей в соответствующее API - id игрока, id вещи. А далее уже на сервере вы проверяете, может ли игрок купить ету вещь, и хватает ли у него на это денег

В онлайн игре любое ваше действие осуществляется на сервере . Со стороны клиента поступает лишь запрос на это действие

--------------------------------------------------------------
К примеру, в Diablo 3 даже расположение монстров, квесты и награда за них - хранится на сервере.
Lynatik001
38 / 32 / 4
Регистрация: 28.09.2012
Сообщений: 620
20.08.2014, 02:09     Защита 2д онлайн игры от взломов #7
Как выше правильно говорили защита от подменны пакетов ето правильная логика и хранение всего в бд.
тот же пример покупки чего либо, клиент отсылает я хочу ето купить, сервер смотрит именно в бд и смотрит сколько у него денег и ли может он ето купить, если может ложит в бд ид итема к персонажу, а персонаж только считивает что у него есть то и поместить в бекпак - хотя с етим не уверен, он же мб сможет считывать.

У самого тогда появился вопрос, если подменить пакет можно так, что сервер пришлет вот столько у тебя предметов, перехватить етот пакет и переслать клиенту(уже с большим колво в паке)
КОП
361 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 762
20.08.2014, 02:32     Защита 2д онлайн игры от взломов #8
Цитата Сообщение от Lynatik001 Посмотреть сообщение
У самого тогда появился вопрос, если подменить пакет можно так, что сервер пришлет вот столько у тебя предметов, перехватить етот пакет и переслать клиенту(уже с большим колво в паке)
ну и пусть клиент у себя хоть миллион предметов рисует. Сервер то знает, что у него есть, а чего нет. Это как пытаться взломать комп с помощью одной мышки.
Lynatik001
38 / 32 / 4
Регистрация: 28.09.2012
Сообщений: 620
20.08.2014, 03:48     Защита 2д онлайн игры от взломов #9
Цитата Сообщение от КОП Посмотреть сообщение
ну и пусть клиент у себя хоть миллион предметов рисует. Сервер то знает, что у него есть, а чего нет. Это как пытаться взломать комп с помощью одной мышки.
да но предмет будет у игрока - думать будет клиент. И например будет пытатся использовать его, а ну да тогда нужно написать просто запрос в бд ли есть такой предмет у него, прежде чем использовать.
Блин но ето колосальная нагрузка же на сервер будет или я просто плохо шарю в этом. Но например 100 онлайна и в секунду там все бегают что то клацают и куча проверок.... и запросов в бд

Добавлено через 5 минут
ходьбу по карте легко можно защитить от взлома, например игрок отправляет- я иду в верх и свой ник, сервер смотрит ли можно туда идти и отсылает координаты.
но опять же нагрузка на сервер...
КОП
361 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 762
20.08.2014, 06:44     Защита 2д онлайн игры от взломов #10
Цитата Сообщение от Lynatik001 Посмотреть сообщение
Блин но ето колосальная нагрузка же на сервер будет
Именно так, но это цена за надежность защиты. Те же World of Tanks, клиент - лишь средство визуализации и передачи команд, считает все сервер.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2014, 16:14     Защита 2д онлайн игры от взломов
Еще ссылки по теме:
C++ Защита ввода.
C++ Защита от дурака
Защита от переполнения C++
C++ Защита от дурака

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
20.08.2014, 16:14     Защита 2д онлайн игры от взломов #11
Цитата Сообщение от Lynatik001 Посмотреть сообщение
ходьбу по карте легко можно защитить от взлома, например игрок отправляет- я иду в верх и свой ник, сервер смотрит ли можно туда идти и отсылает координаты.
но опять же нагрузка на сервер...
Выносить такое на сервер - нецелесообразно. В большинстве случаев, "залезть на гору" или на какой то статичный объект ничего полезного/вредного не несет.

Так же просто просчет этого на сервере - довольно не простая задача. Со стороны клиента все просто - вы можете прыгнуть на определенную высоту, и если ваши будущие координаты выше какого то "выступа" - вы на него запрыгиваете. А как это проверять на сервере, без карты ? В теории можно, но бессмысленно.

P.S.
Хаки с передвижением можно конечно использовать в данжах - что бы якобы не сражаться со всеми монстрами. Но в то же время можно просто ввести обязательное условие зачистки данжа(или его части) для появления босса.

Цитата Сообщение от Lynatik001 Посмотреть сообщение
Блин но ето колосальная нагрузка же на сервер будет или я просто плохо шарю в этом. Но например 100 онлайна и в секунду там все бегают что то клацают и куча проверок.... и запросов в бд
В отличии от обычных запросов информации, которые можно закешировать, эти действительно должны постоянно стучаться в БД.
Но здесь есть вполне себе действенный выход - разделить БД физически. Когда все хранится в одной БД - соответственно все запросы идут только на нее. Спроектировав ее по частям( к примеру по самым часто запрашиваемым таблицам) вы общий поток запросов делите на количество этих частей. Все эти БД можно размещать на разных машинах/серверах. Соответственно нагрузка на отдельную машину и БД меньше.

Цитата Сообщение от Lynatik001 Посмотреть сообщение
да но предмет будет у игрока - думать будет клиент. И например будет пытатся использовать его, а ну да тогда нужно написать просто запрос в бд ли есть такой предмет у него, прежде чем использовать.
Нажимаете "использовать предмет" ->запрос к серверу-> проверка наличия предмета->проверка условий использования -> если использование возможно - запрос к БД на удаление предмета -> применение еффекта (добавление жизней, денег и тд)-> возвращение ответа клиенту и проигрывание анимации
Yandex
Объявления
20.08.2014, 16:14     Защита 2д онлайн игры от взломов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru