Игры Евгений Петров
14 629

Почему одни чит-коды в GTA San Andreas выглядят нормально, а другие похожи на тарабарщину

К выходу новой части GTA, Rockstar Games серьёзно заморочилась с сокрытием комбинаций для читов, но перехитрила сама себя.

В закладки
Аудио

Давеча я наткнулся на интересный разбор механики чит-кодов в San Andreas, ниже оригинал видео и его пересказ.

Я полностью прошёл GTA:SA на PS2, где чит-коды было вводить очень удобно. Например: L1, L2, R1, R2, влево, вниз, вправо, вверх, влево, вниз, вправо, вверх (здоровье, броня, $250k). Наверное, из-за этого тем удивительнее было, почему в ПК-версии были какие-то странные HESOYAM, AEZAKMI и прочие.

На самом деле, Rockstar просто решили заморочиться, чтобы список кодов не нашли в первые дни после релиза, и придумали хитрую схему: представьте, что все ваши нажатия клавиш вводятся в невидимое поле длиной 29 символов, причём очередная буква или цифра встаёт на первое место и сдвигает остальные (ввели 123456, строка выглядит как 654321). После появления каждого нового символа, игра берёт первые 6, применяет к ним хэш-функцию (если просто, по некоторому правилу превращает одни символы в другие) и сравнивает с некоторым списком. Если нет совпадений, то берёт первые 7 и т.д.

Скриншот из видео выше
https://youtu.be/x8Cb69L2-Uw

Что это за список? Это значения хэш-функции CRC32 от «настоящих» чит-кодов, типа ROCKETMAN, INEEDSOMEHELP и др.

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

Простой пример: функция y=x^2 («игрек равно икс в квадрате»). Если взять «y» равный 4, то в качестве «х» одновременно подходят как 2, так и -2

В результате, у каждого «настоящего» чит-кода есть невероятно много (в видео приведено число с 34 нулями) аналогов, а вышеупомянутый HESOYAM просто нашли быстрее, чем INEEDSOMEHELP. Любопытный факт: некоторые читы можно активировать последовательностью, состоящей всего из 4 различных букв: W, A, S, D. Именно такой случай и произошёл у спидраннера LelReset, когда тот пытался поставить мировой рекорд. После окончания заставки игрок начал движение в автомобиле и случайно «заспавнил» перед собой боевой вертолёт Hunter, погубивший ему попытку.

Тот самый момент с вертолётом Hunter

К слову, в GTA III чит-коды располагались в исходниках игры в открытом виде, а в GTA Vice City они были зашифрованы несложным шифром перестановки. По-видимому, этих мер было недостаточно, и разработчики постарались ещё усложнить поиск заветных символов, однако вместо этого сделали их великое множество. Напоследок, ещё один любопытный факт: сайт ag.ru в своё время опубликовал «эксклюзивные чит-коды» для San Andreas, каждый из которых начинается на AGRU. Думаю, теперь вам стало понятно, почему так вышло.

#GTA #SanAndreas #RockstarGames #Читы

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Евгений Петров", "author_type": "self", "tags": ["\u0447\u0438\u0442\u044b","sanandreas","rockstargames","gta"], "comments": 39, "likes": 188, "favorites": 63, "is_advertisement": false, "subsite_label": "games", "id": 58083, "is_wide": false, "is_ugc": true, "date": "Tue, 09 Jul 2019 11:31:11 +0300" }
{ "id": 58083, "author_id": 15107, "diff_limit": 1000, "urls": {"diff":"\/comments\/58083\/get","add":"\/comments\/58083\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/58083"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64953, "last_count_and_date": null }
39 комментариев

Популярные

По порядку

Написать комментарий...
36

Думаю, теперь вам стало понятно, почему так вышло

неа,не стало,но все равно было интересно

Ответить
23

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

Ответить
13

Просто достаточно было привести пример, что каждому символу соответсвует число, и сумма этих чисел - есть наш хэш (просто в другой системе исчисления).
Таким образом получить нужную нам сумму (хэш) можно благодаря совсем отличным от исходных символов, главное, чтобы сумма их значений соответствовала требуемой.
*P.S. - Это не истинное определения хэша, это лишь утрированный пример для легкого восприятия.

Ответить
1

Я для этого y=x^2 упомянул как раз :)

Ответить
0

пример на основе y=x^2 слишком простой и не дает того понимания который вы хотели объяснить(

Ответить
7

ааааа, теперь понятно...(нет)

Ответить
15

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

Теперь представьте, что для активации чита вам нужно кинуть телефон в мусорное ведро. Разработчики решили, что для того, чтобы активировать чит на 200 IQ, вам нужно кинуть в мусорное ведро смартфон Govnophone XL.

Игра проверяет не то, какой телефон вы кинули в мусорное ведро, а её хэш-функцию (диагональ экрана смартфона) на совпадение с хэш-функцией смартфона Govnophone XL. Поэтому если мы кинем в мусорное ведро другой смартфон с такой же диагональю экрана, то чит всё равно активируется!

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

Ответить
0

Мне кажется можно проще: вместо того чтобы сдать свою контрольную работу и получить пятерку, ты сдаешь контрольную работу друга и получаешь пятерку.

Ответить
10

Вот почему читатель со стороны стесняется, что он таких вещей не понимает, а очередной девятнадцатилетний претендент на позицию программного архитектора на зарплату $90k в день — нет? :(

Ответить
2

Вы, конечно, жмоты. Всего лишь $90k в день? В нормальных компаниях $300k в секунду. Потому к вам только такие и идут!

Ответить
1

Хм, что именно непонятно?

Ответить
0

У хэшей могут быть коллизии. Это когда два или более разных значений дают один и тот же хэш. Ну т.е. два разных слова могут иметь одинаковые хэши.

Ответить
5

Теоретически (и практически) чит можно вводить с любой приставкой, так как по факту учтены будут только последние символы – то есть те, которые и являются самим чит-кодом. Ничего не мешает, к примеру, ввести AGRUHESOYAM или AGRUBAGUVIX, и они тоже будут работать. Это удобно использовать как элемент пиара и рекламы.

Ответить
11

Для меня история с чит кодами в детстве была загадкой) я думал, что это не разработчики их пишут, а мы как хакеры игру ломаем)

Ответить
0

Т.е. даже осмысленными словами?

Ответить
11

В детстве всегда думал, что BEKKNQV - это костюм ниндзя.

Ответить
2

Кто такие "патриоты"?

Ответить
1

Друзья, подскажите, пожалуйста, как добавить теги к посту?

Ответить
5

Пишешь #, затем нажимаешь после него (автоматически не получится) и пишешь нужный хештег

Ответить
0

Спасибо!

Ответить
3

Вручную вписать

Ответить
2

Cocke-doodle-doo - как вам такой чит-код?

Ответить
2

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

Ответить
0

Мерси, поправил

Ответить
1

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

Ответить
0

Но так и было. На 100% уже не пройти.

Ответить
1

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

Ответить
1

Альтернативное объяснение той же сущности на пикабу.
Автор ещё заморочился и сделал коды, которые начинаются с pikabu.

https://pikabu.ru/story/skaz_o_tom_pochemu_lelresetfeg_so_spidranom_ne_svezlo_6217012

Можно сделать что-то подобное с DTF )

Ответить
1

Ах, коллизии хеша, встречаются, увы, не только в читах. Гораздо веселее, когда случаются они в сетевых коммутаторах, когда сидишь никого не трогаешь, а тебе вдруг на порт прилетают чей-то кровный трафик в размере 100 Мбит/с.

Ответить
0

в GTA III чит-коды располагались в исходниках игры в открытом виде

А исходники утекали? Может всё-же в бинарнике?

Ответить
1

Хорошее замечание, спасибо! Да, скорее всего, я ошибся и неправильно интерпретировал информацию в видео, хотя часть исходников GTA III в своё время утекла в сеть, оказавшись на одном из дисков для PS2.
https://gtaforums.com/topic/393270-gta-3-source-code-classes-list/

P.S. Исправить пост уже не могу, к сожалению, нужная кнопка отсутствует :(

Ответить
0

А вы хотели, что бы было банальное "дайтемнеусатанк"?)))

Ответить
0

Я ничего не понял, но очень интересно.

Ответить
0

Хорошо, продолжайте наблюдение

Ответить
0

Прикол, я вспомнил, что юзал AGRUIKWJDXA на вертолет, тупо учил, как он звучит а-ля "агруиквдждкса", теперь любопытно узнать, что этот "агру" чето значил)

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
В Steam появилась функция продажи
подержанных цифровых копий игр
Подписаться на push-уведомления