???
Математика на уровне МГУ

Показано с 1 по 25 из 142

Тема: Новая защита Ил-2 вместо пока не сломанной :)

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Re: Новая защита Ил-2 вместо пока не сломанной :)

    (Продублировал пост из SFS Wizard)

    По поводу непробиваемости checkruntime=2 и пр., да и вообще по поводу читов (не persistent-модификации свойств объектов ), предложение к QTim и всем заинтересованным: не нужно "ломать" объекты и думать про integrity-проверки файлов клиента на сервере. Есть более прямой способ.

    Дано:
    1. взаимодействие игрока с объектами окружения в игре обсчитываются на стороне клиента (на компьютере игрока короче)
    2. данные передаются самостоятельными "пакетами", а не потоком целостность которого поддерживается обеими сторонами канала (как это попроще сказать - все тут наслышаны о чудесах онлайна, стрельбе из ниоткуда в никуда, о пропаже этих самых "пакетов" и тп, при передаче в потоке с поддержкой целостности таких проблем не возникает, зато возникают проблемы производительности сервера)

    Следовательно, нужно "атаковать" информацию передаваемую с клиента. Поясню на примере.
    1. игрок А заходит на 6 игроку Б
    2. игрок А стреляет короткой очередью
    3. движок Ила игрока А обсчитывает траекторию снарядов и траекторию движения крафта Б (получаемую от сервера)
    4. допустим движок приходит к выводу что один снаряд А попал в двигло Б
    5. движок формирует пакет данных для передачи серверу, в котором (среди прочего интересного но пока опустим это) присутствует и идентификация результатов стрельбы - двигатель Б поврежден одним снарядом
    6. пакет данных отсылается серверу
    7. сервер принимает эту информацию и передает ее всем участникам игры - двигатель Б повреджен одним снарядом
    8. движки игроков включая Б начинают визуализировать повреждения - двиг дымит или вообще сдох и тп (здесь возможны вариации как в деталях реализации клиентами так и в способе обработки, но это пока не существенно)

    Что нужно делать атакующему - для начала собрать материал для анализа, воспользовавшись инструментом типа Ethereal (http://www.ethereal.com/). Затем имея в руках некую статистику можно начинать пробовать свои силы - какие именно данные нужно модифицировать в пакете на шаге 6 выше для того чтобы в нем присутствовала информация не "двигатель Б поврежден одиним снарядом" а "пилот Б словил в макушку 1 снаряд (или 10, или 1000, или ракету или все что угодно)"
    Естественно на стороне А для движка и игрока все будет выглядеть "по-честному" пока от сервера не придет ответ что "пилот Б склеил ласты в бурьяне" (пардон за вольность, хочу чтобы объяснение было популярным а не техническим).

    ---
    Причем, прошу заметить, против такого лома есть только один прием, введение которого в обозримом будущем не предвидится - передача данных потоком в сесси, целостность которой поддерживается обеими сторонами (если кто знаком с технологией то что-нибудь вроде SSL с предварительным handshake по сертификату). Как я уже упоминал, применение такого противоядия серьезно сказывается на производительности сервера, самым негативным образом - обработка большого количества данных и контроль целостности канала здорово ограничивают количество участников сессии.
    Даже против этого приема есть дальнейшие методы атаки - но они существенно "дороже" в плане реализации - выражаясь технически session termination становится невозможен без того чтобы самому ПОЛНОСТЬЮ реализовывать заместителя кода клиента (то есть внедрение посреди сессии и модификация пакетов не прокатит - нужно будет начинать сессию с самого начала и правильно передавать ВСЕ данные чтобы иметь возможность ими манипулировать).

    ---
    Все вышесказанное естественно ИМХО, все может обстоять совершенно не так как я описал, поскольку сам не пробовал ибо неинтересно.

  2. #2
    Jedem das Seine Аватар для Butcher
    Регистрация
    30.07.2004
    Адрес
    у Черного моря
    Возраст
    53
    Сообщений
    789
    Images
    4

    Re: Новая защита Ил-2 вместо пока не сломанной :)

    Цитата Сообщение от mapa3m Посмотреть сообщение
    ...Следовательно, нужно "атаковать" информацию передаваемую с клиента. Поясню на примере.
    1. игрок А заходит на 6 игроку Б
    2. игрок А стреляет короткой очередью
    3. движок Ила игрока А обсчитывает траекторию снарядов и траекторию движения крафта Б (получаемую от сервера)
    4. допустим движок приходит к выводу что один снаряд А попал в двигло Б
    5. движок формирует пакет данных для передачи серверу, в котором (среди прочего интересного но пока опустим это) присутствует и идентификация результатов стрельбы - двигатель Б поврежден одним снарядом
    6. пакет данных отсылается серверу
    7. сервер принимает эту информацию и передает ее всем участникам игры - двигатель Б повреджен одним снарядом
    8. движки игроков включая Б начинают визуализировать повреждения - двиг дымит или вообще сдох и тп (здесь возможны вариации как в деталях реализации клиентами так и в способе обработки, но это пока не существенно)
    1. игрок А заходит на 6 игроку Б
    2. игрок А стреляет короткой очередью
    3. движок Ила игрока А обсчитывает траекторию снарядов и траекторию движения крафта Б (получаемую от сервера)
    4. движок Ила игрока Б обсчитывает траекторию снарядов и траекторию движения крафта А (получаемую от сервера)
    5. движок А приходит к выводу что один снаряд А попал в двигло Б
    6. движок Б приходит к выводу что ниодин снаряд А непопал в Б
    7. движок А и Б формирует пакет данных для передачи серверу
    8. пакет данных отсылается серверу
    9. сервер принимает эту информацию и по результатам идентификации стрельбы - А не равно Б, передает ее всем участникам игры - "обнаружено вероятное мошенничество"
    10. игроки А и Б продолжают воевать, злобно матерясь и обвиняя друг друга в читерстве
    C2D E6750@3.0; Geil PC2-6400 C4@900 (4x1Gb); ENGTX260 GL+/2DI/896MD3/A @1920x1080; Gigabyte GA-P35-DS3L; Win7(x64); FreeTrack 2.2.0.279 (3-Clip)
    И все-таки, БзБ сказал "Гуд Бай!"

  3. #3

    Re: Новая защита Ил-2 вместо пока не сломанной :)

    Цитата Сообщение от Butcher Посмотреть сообщение
    1. игрок А заходит на 6 игроку Б
    2. игрок А стреляет короткой очередью
    3. движок Ила игрока А обсчитывает траекторию снарядов и траекторию движения крафта Б (получаемую от сервера)
    4. движок Ила игрока Б обсчитывает траекторию снарядов и траекторию движения крафта А (получаемую от сервера)
    5. движок А приходит к выводу что один снаряд А попал в двигло Б
    6. движок Б приходит к выводу что ниодин снаряд А непопал в Б
    7. движок А и Б формирует пакет данных для передачи серверу
    8. пакет данных отсылается серверу
    9. сервер принимает эту информацию и по результатам идентификации стрельбы - А не равно Б, передает ее всем участникам игры - "обнаружено вероятное мошенничество"
    10. игроки А и Б продолжают воевать, злобно матерясь и обвиняя друг друга в читерстве
    Очень хорошо.

    Было: сложность константная (порядок 1 в независимости от количества участников)
    Стало: сложность линейная (порядок N где N - количество игроков)

    Вспомним заявления о невозможности добавления неких свойств в поведении ботов ибо "будет жутко тормозить".

    Вы думаете МГ станет реализовывать такую схему? Сейчас каждый клиент обсчитывает свое взаимодействие с остальными объектами, плюс получает информацию с сервера.
    В этой схеме, при наличии 4 игроков каждый из них будет обсчитывать 4 среды - свою и ВСЕ 3 остальные, чтобы иметь возможность что-то передавать серверу.
    Вы представляете себе ситуацию - игрок 1 говорит серверу - а по моим подсчетам у игрока 2 кончился топляк, а игрок 3 говорит серверу что у игрока 2 топлива еще 25%, при этом игрок 2 имеет совсем другое мнение о протекании процессов с ЕГО крафтом. Как это все разруливать?
    Серверу нужно сравнивать "мнения" каждого о каждом - то есть чтобы принять достоверность информации о поведении крафта 1 в игре четырех участников, "показания" трех остальных о нем должны сходиться.
    Тогда я могу ВСЕГДА "затопить" поведение любого из своих противников - просто всегда передавая о нем заведомо ложную информацию - игра сразу теряет смысл.
    Да и с трудом я представляю чтобы один движок смог без потери производительности обсчитать хотя бы ДВЕ полноценные модели для всего-то ДВУХ игроков.

  4. #4
    Citizen of the Galaxy Аватар для Harh
    Регистрация
    19.02.2005
    Адрес
    Russia, Chelyabinsk
    Возраст
    44
    Сообщений
    9,397
    Images
    4

    Re: Новая защита Ил-2 вместо пока не сломанной :)

    Цитата Сообщение от Butcher
    так в том то и дело что предложенный тобой вариант - это то что есть сейчас (ИМХО), то что написал я - никто делать не будет, потому что тоже не вариант. все упирается для начала в пинги, потом в приоритеты пакетов (сейчас , ИМХО, опрос по очереди ), потом в мощности компов и серверов.
    Угу... Даже при пинге у обоих игроков 80 запаздывания межлу ними будет уже достаточное, чтобы на компе А игрок попал, а на Б - нет. Так что там постоянно будут "вероятные мошенники" проявляться...

    Можно просто, чтобы на экране надпись появлялась вроде "XXXX have possibly cheated on YYYY"... Но больше грызни будет, чем проку.

    Можно, конечно, сетевой протокол реализовать по принципу, что все обсчитывается на серваке, а не у клиента, но тогда и серверам тяжко будет, и клиенты на ватность управления и стрельбы изматерятся
    Трехмерка по одному проекту: www.youtube.com/watch?v=Xub-3TA7MIE&feature=plcp

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •