Как стать автором
Обновить

Комментарии 83

Как обойти подсчёт хэша библиотек для того чтобы считать хэш от оригинальной а использовать патченую? Раз процесс происходит на клиенте то должны быть способы.
НЛО прилетело и опубликовало эту надпись здесь

Подменить библиотеку/функцию подчёта хеша?

Просто направить подсчёт хеша к оригиналу, который лежит рядом?

Так можно усложнить разработку и использование читов, но полностью избавится от читеров не получится. Единственное способ который я знаю это полностью считать все на сервере
НЛО прилетело и опубликовало эту надпись здесь

Полагаю аимбот легко вычисляется статистически.

НЛО прилетело и опубликовало эту надпись здесь
С другой стороны не наглеющий читер не будет так отпугивать игроков.
Ведь главное, что интересует разработчиков — прибыль. А она зависит от количества активных игроков. А активные игроки расстраиваются и уходят, если их несколько раз подряд выносят хедшотами, пролетая сквозь стены, потому что они так не могут, а читер может.

Если пользователь не сможет понять никак, скилловой игрок или читер, то вреда будет не особо много и разработчики могут спать спокойно.
То то стало нормой обвинять читером и слать репорты на любого играющего чуть лучше серой массы.
Я потому онлайн и забросил. Когда после каждого удачного матча доходит чуть ли не до оскорблений, сложно продолжать играть.
И такая ситуация во всех более менее популярных играх с PvP. От покупки той же GTA5 и вовсе отказался из за обилия читеров, действия которых порой приводят к бану игроков попавших в одну с ним сессию.

В большинстве f2p игр активные игроки, не являщиеся донатящими по 50$/сутки Абрамовичами, точно так же расстраиваются и уходят без всяких читов, оставляя отзыв "донатное гуано" в маркете.
Ибо крупный донатор может ровно то же что и читер (а порой даже больше), вот только его даже зарепортить нельзя ибо свой чит он купил не у левого васяна, а у разработчика напрямую. И тут уже на вой обычных игроков никто не смотрит.


И в итоге на равных играют донаторы vs читеры, ибо остальные не способны тягаться ни с первыми ни со вторыми.


А судя по тому как донатные игры (невзирая на отзывы и рейтинги) растут аки грибы после дождя — возникает мысль что на "количество активных игроков" в долгосрочной перспективе разрабам глубоко плевать. Главное на старте толпу создать, чтобы донаторы внесли побольше ради отрыва вперед, а дальше можно забить на всё и плодить сотни новых серверов или сотни копий игры с другим именем и рескином. А что за ад творится на старых и есть ли там кто — пофиг.

Чтобы отрисовать врага, вам придется отправить его координаты на клиент.

Так можно усложнить разработку и использование читов, но полностью избавится от читеров не получится.
я может ошибаюсь, но не слышал про читеров на PS4.

P.S.
а в чем хумор читерства? Например, вот ты убиваешь любого игрока одним выстрелом, даже если ты целился условно в 2-3 см от него и что? Что это дает самому читеру? Или это какой то вид болезни
Что это дает самому читеру?

Ощущение превосходства. И нет, это не болезнь, это одна из довольно типовых хотелок человеческой психики, особенно в молодом возрасте и когда есть нехватка такого ощущения.
Ну вот ровно как хотелка принизить тех, кто хочет ощущать превосходство, написав что "это как-то вид болезни".

Ощущение превосходства.
превосходства в чем? Если читер не прилагает никаких усилий, а условно нажимает одну кнопку — «Сделать все ЗБС»

Превосходство в "хитрости".
Ещё есть вторая причина читерства — игра надоела и перед забрасыванием игрок хочет дожать последние капли удовольствия.

В киберпортивных играх читеры — неоспоримое зло для игроков.


Но представьте себе не киберспортивную, а типичную ф2п. Например уже мертвую ммо Perfect World. Летаете вы, качаетесь, и тут залетает человек, за месяц вкинувший в игру цену двушки в Москве, и выносит в соло человек 10. В чем его интерес? А в чем интерес играть остальным в игру, где за деньги можно подобное? И какая разница обычному игроку — отдал этот кадр деньги за приватный чит моддоделу или напрямую разрабам занес за такие возможности?


А вот читеру тут как раз возможность тягаться с такими и возможно даже спускать их с небес на землю :)


И тут читер зло во плоти лишь для разрабов ибо посягает на их кормовую базу. А для игроков уже пофиг — они и без читеров страдали ровно от того же благодаря разрабам.

Можно ещё постоянно менять код. Разрабы то ли Warface то ли Crossfire так делали одно время — читеры не успевали адаптироваться. Но почему-то потом отказались от такой защиты. Думают, потому что начало падать количество игроков.

Возможно, не понял всех деталей, но получается что слабое место вашей защиты это постоянное соединение. Нет?
Т.е. если у человека есть клиент, есть свой ssl ключ (или вы ему и локальные ключи генерируете? проверяете? ведёте реестр ключей?), то перехват трафика по которому гоняется json — ну это, возможно, не самая сложная задача. А далее либо свой бот, либо man-in-the-middle и всё в шоколаде. Нет?

Возможно, я путано объяснил. Просто нас был случай (это не геймдев), что инженер из конкурирующей компании зарядил сетевой сниффер и раскопал наш протокол (бинарный!) и даже воспроизвёл ответную часть, которая умудрялась что-то «мычать» в ответ.

От таких проблем защищаетесь? Или неактуально?
Постоянное соединение, наоборот, помогает избавиться от ряда уязвимостей, но присутствовал другой для геймдева момент — при переходе на него была опасность потерять часть пользователей, так как для них сильно менялся пользовательский опыт
А какой смысл в подсчёте хеша библиотек? Взломщик возьмёт эталонные контрольные суммы и будет отправлять их на ваш сервер.
В отдельности это, конечно, преодолимая защита, как и большинство других, но в совокупности со всем остальным делает взлом ресурсозатратнее. А это в свою очередь снижает количество взломщиков, сумевших переступить порог

Разве недостаточно, чтобы до конца добрался хотя бы только один взломщик?

Хм… У меня когда-то было предположение, как можно сделать достаточно надежную валидацию в том смысле, что пользователь использует оригинальный бинарный файл клиента, но я так его и не проверил. Коллеги, как полагаете, есть ли в нем смысл?

Что, если сервер будет запрашивать хеш не всего бинарника клиента, а какой-то случайной его части (среди тех библиотек, которые есть на всех устройствах)? Это исключает подстановку референсного значения «починенным» клиентом, поскольку тот заранее не знает, какой кусок будет выбран. Полученный хеш впоследствии можно использовать, например, для генерации сессионного ключа.
А толку? Можно же просто сохранить исходные версии и считать от них хеш.

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

Держать рядом версию оригинального клиента

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

Вот мое:
  1. С сервера отправлять рандомный токен при при коннекте пользоваться, и использовать его при подсчете хэша всех библиотек
  2. Считать хэши библиотек и слать обратно на сервер
  3. На сервере проделывать ту же операцию, т.к. вы токен уже знаете


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

А, для еще большего усложнения, можно кипу вариаций придумать (главное чтобы работало быстро):
— отправлять токен и флаг с сервера. Флаг укажет куда добавлять рандомный токен (начало/конец файла) перед подсчетом хэша
— если алгоритм подсчета позволяет, отправлять токен и оффсет с сервера. Оффсет укажет куда добавлять токен перед подсчетом (понятно, что оффсет не должен превышать длину библиотек)
— можно считать хэш от библиотек, добавлять токен и считать хэш от сконкатенированных значений еще раз
— и т.п.

… и это никак не поможет, если в хакнутом приложении в функции пересчета хешей, неважно насколько они хитрые, будут подаваться оригинальные файлы, лежащие в соседней папки :)

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

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

И поиском в Artmoney 99% школьников уже не способны найти подобную уловку.
Но… зачем это в сингл играх?

Сразу скажу, я не имею никакого отношения к разработке игр, поэтому может я что-то упускаю.

Но меня всегда удивляет когда я вижу такие техники в одиночных играх.
Если человек пошел память править чтобы начитерить, он портит удовольствие только себе и никому другому, причем сделает это осознанно. Причем не факт еще что портит, может быть небольшими изменениями он сделает эту игру в разы интереснее для себя.
С одной стороны, в ряде синглплеерных игр ВСЕ рейтинги в Стиме заняты уникумами, которые проходят игру за ноль секунд, собирая по пути все предметы и убивая всех врагов. Вот тут вечный бан по ДНК пригодился бы.
С другой стороны, в ряде этих игр разработчики делают странное. Например, последний босс первой Ys раз тридцать убил меня уже после того, как я заморозил себе здоровье. А Ittle Dew 2 из головоломки (как первая часть) превратился кривую подделку под «souls-like» с кривым управлением. И пройти это без читов я бы не смог.

Бан в стиме просто за то, что зашёл в какой-то рейтинг, который интересен лишь тем, кто его откроет? Примерно как забанить на олимпиаде всю страну за то, что её команда по гольфу пользуется баллистическими калькуляторами.
Это же всего лишь какой-то рейтинг в каком-то сервисе. Неужели у кого-то есть цель проходить игры лучше всех, а не просто получать удовольствие? Кроме спидранеров.

Не «зашёл в какой-то рейтинг», а «взломал игру таким образом, чтобы в онлайн рейтинге этой игры твои результаты оказались на первом месте». Люди очевидно делали это специально. Если этот рейтинг видят только они — то пусть хоть отрицательное время накручивают, но если у оффлайновой игры рейтинг в сети ведётся, то нужно таких кулхацкеров банить. И такие игры — пример того, что в оффлайновых играх тоже иногда нужна защита от читеров.

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

Вам в игру играть и чсв в рейтинге тешить?

Возможно для вас это будет сюрпризом, но рейтинг — это часть игры. Если уж его туда добавили, то и читеров оттуда нужно гонять.

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

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

Ачивки, кстати, в юплее конвертируются во внутреигровые предметы. И иногда заставляют по-новому смотреть на игру. Конечно, есть и 100% тупые, типа «собери все предметы», но именно из-за ачивки «Immortal» я провёл пару дополнительных часов во Freedom Fall и получил от этого огромное удовольствие. Но, как мы недавно выяснили, это я просто неправильно в игры играю, не так, как нравится вам :(
Играете то вы правильно. Но вы проблему читеров в играх приравняли к проблеме накрутке рейтинга в идущей в довесок к игре приблуде (а лидерборды в синглах как раз таки этим и являются т.к к ни к синглу, ни к геймплею в данных играх отношения не имеют).

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

Так что накрученные рейтинги и ачивки в сингл-играх — даже и близко не рядом с читерами в играх. Они где-то на уровне редактора сейвов для Baldur's Gate.
И то и то — читеры.
Чтобы донатили, а не крутили трейнером деньги
Как ни прискорбно, но кажется это может быть веской причиной, спасибо.

Ачивки, например. Или лидерборды. И любые иные формы асинхронной соревновательности.
Помню, в ANNO 2070 опенбета-тестировали добавление в игру командных соревнования, где этапы игрались игроками команды поочерёдно как просто сингл сценарии, а победу одной из двух команд присуждали по то-ли сумме этапов, то ли очкам за этапы. И там попросту кто-то через что-то артманиобразное прошёл этап накинув себе безлимитно ресурсов и на них сразу отгрохав требуемый город.
Вроде идею на этом и похоронили.

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

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

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

Но чтобы полноценно защитить лидерборд нужен комплекс мере побольше чем защита от артмани

Часто в таких лидербордах в топе сидят люди, «прошедшие» игру/трассу/уровень/etc за ноль секунд. Потому что на что-то большее им не хватает знаний. Поэтому там даже никакого алгоритма не нужно — можно просто банить всех, кто показал физически невозможное время.

Только что вот проверил в geoguessr — в сегодняшнем «событии дня» на первых местах уникумы, которые за три минуты на раунд смогли пять раз подряд угадать место с точностью до нескольких сотен метров. Я видел невероятно хороших игроков в эту игру, но даже они не могут так.
НЛО прилетело и опубликовало эту надпись здесь
Что мешает мне потратить немного ( или много )

Вотименно что много времени. Разлелить инт на сумму 2 чисел можно за пару часов, а мучений читеру это плюс 10 часов. Прибавляем автокраш при попытке отдебажить игру популярным средством и 99% читеров уже не могут ничего сделать.
— Хранение данных — тут я вообще не понял какая проблема?
В одной игре запрет админки на стороне клиента делали)
Подсчет хеша всех библиотек самая глупая защита.
Зато добавляет +X часов на взлом.
Разлелить инт на сумму 2 чисел можно за пару часов

Ну разве что если прямо на проде всё править. Иначе добавляются все шаги, необходимые для релиза.

НЛО прилетело и опубликовало эту надпись здесь

Да и хакеры могут поделить обязанности.

НЛО прилетело и опубликовало эту надпись здесь
В этом и фокус, защитить настолько, чтобы стало невыгодно.
НЛО прилетело и опубликовало эту надпись здесь
Мне интересно что вы пытаетесь доказать, приведя в пример синглплеергую игру? В большинстве сингл игр изначально есть консоль с командами.
НЛО прилетело и опубликовало эту надпись здесь
Я пытаюсь сказать что все большинство проблем с читерством решается на уровне архитектуры.

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

Это ж на сколько надо защитить игру, чтобы продажи чита не окупили затрат времени? Особенно для человека, у которого подобные навыки уже развиты почти до автоматизма сотней защищенных подобным образом игр, а весь нужный инструментарий давно взломан/куплен?


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

Все эти вещи делаются, чтобы в игре было не 80% читеров, а 1-2%.
А их можно вычислить уже и забанить руками.
НЛО прилетело и опубликовало эту надпись здесь

Вы же осознаёте, что читы и моды делают эти самые 1-2%, а остальные 80% просто берут готовое за деньги (или бесплатно) и пользуются?

полноценный клиент-сервер и 98% затрат на противоборство с читерами можно пропустить.

Профессиональных читеров останавливает только отсутствие выгоды, в остальном это вечная борьба.

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

Вы же осознаёте, что читы и моды делают эти самые 1-2%, а остальные 80% просто берут готовое за деньги (или бесплатно) и пользуются?

Как человек продержавший в свое время несколько разных игровых серверов с онлайном от 100 до 100.000 игроков, я могу сказать, что против 1-2% бороться проще, чем против 10-15%.
Вдобавок с этими 1-2% можно даже договориться об определенных ограничениях и возможностях.

Мне кажется, единственный действенный способ бороться с читерами — это облачные технологии, когда на стороне клиента только устройства ввода.

Но и в этом случае можно сделать аим-бот на основе нейронной сети, анализирующей видео-поток и управляющей персонажем через эмуляцию геймпада…
Банить нейросеть, которая захотела поиграть с людьми, это уж совсем дискриминация. NLM!
НЛО прилетело и опубликовало эту надпись здесь
Это не подойдёт для динамических игр, вроде шутеров, которым нужен хороший пинг. Да и вообще, мало для кого удобным будет тянуть fullhd+ картинку в режиме реального времени.
Вполне играбельно. Попробуйте Drova — там сервер может быть в вашем городе. Тогда пинг будет вообще незаметен.

А вообще разницы вообще не будет, если сервер игры будет находится в томже ДЦ, что и сервер стримминга:
Обычно: Игрок жмет кнопку, данные уходят на сервер, приходит ответ (Реакция на действие), компьютер рисует картинку в соответствии с новыми данными.
Стримминг: Игрок жмет кнопку, данные уходят на сервер, приходит готовая картинка, которую остаётся только отобразить…
Для чего же тогда client-side prediction делают?
Тогда пинг будет вообще незаметен.

Нет, будет.


А вообще разницы вообще не будет, если сервер игры будет находится в томже
ДЦ, что и сервер стримминга

Тоже будет.


Во-первых, игры на стороне игрока могут рендериться с очень высоким (и нестабильным) фреймрейтом. Стримингов, которые бы умели в динамический фреймрейт, да ещё и в 140+ кадров, я пока что не видел. Плюс это существенно повышает требования к пропускной способности канала. Во-вторых, они это делают асинхронно от взаимодействия с сервером. В-третьих, чтобы пришла готовая картинка, её сначала надо закодировать, а потом раскодировать — это тоже занимает время. И есть ещё всякие детали синхронизаций буферов вывода/рендера.
А ещё стриминг это большой компромисс в качестве картинки, даже при высоком битрейте.

Тоже будет.

Плюсую. Пинг 50ms до сервера стриминга (и условный 0 между сервером стриминга и сервером игры) и тот же пинг 50ms с клиента до сервера игры — это две большие разницы.
Всё дело в интерполяции на клиенте и сервере, которые очень хорошо компенсируют всю это задержку. И что невозможно сделать при стриминге.

Я попробовал geforce now и для шутеров это вообще не близко с локальным запуском.

Интересно было прочитать, вот только половина разработчиков (99.97%) вообще не борятся с читерами или пытаются бороться, но они (последние) придумывают новые способы обхода.

Я уже джва года жду когда уже кто-то из разработчиков шутеров перестанет бороться с читерами, а вместо этого возглавит. Грубо говоря, сделать мод для какой-нибудь условной контры, в котором читы это часть геймплея. Типа у нас тут киберпанк, у людей есть биопротезы, поэтому доступен волхак, автоэйм и прочие радости. Но не всё одновременно, а например только что-то одно за раунд. В контре это могло бы быть умение, которое докупаешь в начале раунда. Причём дешевый волхак показывает противника за 10м, более дорогой уже за 20 и т.д. Можно добавить энергию, которая тратится на использование умения, дабы сбалансировать это.
Это всё не решает проблему читеров, оф коз, но сама идея-то вроде прикольная.
Конечно прикольная… пока читер не разлочит себе всё и сразу и пойдёт играть против остальных, которые пытаются играть честно с ограничениями.
Я ж сразу написал, что про читеров отдельный разговор. Просто мне нравится идея такого шутера.
Мне тоже нравится, мы играем в quake3 c r_shownormals 1
НЛО прилетело и опубликовало эту надпись здесь
А там есть мультиплеер что-ли? Я про PvP шутеры типа контры.
НЛО прилетело и опубликовало эту надпись здесь

В point blank долгое время была ситуация когда с читами были все. Вероятность получить в игре хоть одного честного игрока была крайне мала (и он сразу ливал).


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

Меня как человека имевшего опыт разработки читов и защиты от них повеселили прям рядом стоящие 2 фразы в тексте:
Самым контролируемым способом будет вычисление текущего хеша на клиенте и отправка его на сервер

Получить путь до наших библиотек можно так:


Это первое что бы я начал искать в клиенте чтобы модифицировать.
Должен сказать, расчет корректности клиента на на клиенте совершенно ничего не даст.
Даже переход на фотон, если логика считается с привязкой к юнити, не поможет делать перерасчет на сервере полностью. Для этого ваш игровой код придется переписать скорее всего (даже если это будет API Photon Quantum). Мы с таким столкнулись в War Robots несколько лет назад, пришлось делать кворум из клиентов чтобы с неполной валидацией сервера хоть как то воспроизводить расчет не в атакующем клиенте. Но это весьма сложная конструкция, я бы так не делал. Если есть бюджет, то проще сразу сделать честный авторитарный сервер, изобретённый уже как 20 лет назад.

P.S. После перехода на авторитарный сервер все равно остаются более элегантные возможности для читов, борьбу с которыми я и ожидал увидеть исходя из заголовка. (Например: просмотр сквозь стены, коррекция прицеливания на лету, манипуляции с собственным пингом чтобы дать серверу рассчитать неправильно)
НЛО прилетело и опубликовало эту надпись здесь
это все хорошо, но как обойти тех кто делает читы на кз.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий