{"id":2575,"title":"\u041a\u0430\u043a \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043d\u0430 \u0432\u0430\u0448\u0438\u0445 \u043b\u044e\u0431\u0438\u043c\u044b\u0445 \u0441\u0435\u0440\u0438\u0430\u043b\u0430\u0445","url":"\/redirect?component=advertising&id=2575&url=https:\/\/vc.ru\/promo\/324373-kto-smotrit-nishevye-serialy-a-kto-na-nih-zarabatyvaet&placeBit=1&hash=61d0c31e5042232fa37d7d77c6be18388ccb9dfcd0148700e688bc836c310567","isPaidAndBannersEnabled":false}
Игры
Groosha

Почему одни чит-коды в 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. Думаю, теперь вам стало понятно, почему так вышло.

0
39 комментариев
Популярные
По порядку
Написать комментарий...
Мутный корабль

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

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

Ответить
39
Развернуть ветку
Groosha

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

Ответить
25
Развернуть ветку
Иван Суслов

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

Ответить
13
Развернуть ветку
Groosha

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

Ответить
1
Развернуть ветку
Артём Скляр

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

Ответить
0
Развернуть ветку
Мутный корабль

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

Ответить
7
Развернуть ветку
Bot Useless

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

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

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

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

Ответить
15
Развернуть ветку
Мутный корабль

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

Ответить
0
Развернуть ветку
Stanislav

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

Ответить
10
Развернуть ветку
Bot Useless

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

Ответить
2
Развернуть ветку
Groosha

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

Ответить
1
Развернуть ветку
Прочий пистолет

Комментарий удален по просьбе пользователя

Ответить
0
Развернуть ветку
соу хэппи

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

Ответить
5
Развернуть ветку
Михаил Гваришвили

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

Ответить
11
Развернуть ветку
perfect_genius

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

Ответить
0
Развернуть ветку
Алексей Жизневский

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

Ответить
11
Развернуть ветку
Владимир Смехнов

Lalilulelo

Ответить
3
Развернуть ветку
Михаил Фикс

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

Ответить
2
Развернуть ветку
Groosha

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

Ответить
1
Развернуть ветку
dimap

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

Ответить
5
Развернуть ветку
Groosha

Спасибо!

Ответить
0
Развернуть ветку
gammaclone

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

Ответить
3
Развернуть ветку
janklod vandam

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

Ответить
2
Развернуть ветку
Сергей Горюнов

It's time for chicken

Ответить
1
Развернуть ветку
Мутный корабль

Cocke-doodle-doo

Ответить
0
Развернуть ветку
Groosha

It's time for hen

Ответить
1
Развернуть ветку
Мутный корабль

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

Ответить
2
Развернуть ветку
Groosha

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

Ответить
0
Развернуть ветку
Кирилл Темный

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

Ответить
1
Развернуть ветку
Дмитрий Юдин

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

Ответить
0
Развернуть ветку
Snowball Snowball

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

Ответить
1
Развернуть ветку
Иван Гуляев

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

https://pikabu.ru/story/skaz_o_tom_pochemu_lelresetfeg_so_spidranom_ne_svezlo_6217012

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

Ответить
1
Развернуть ветку
Eight Bit

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

Ответить
1
Развернуть ветку
perfect_genius

в GTA III чит-коды располагались в исходниках игры в открытом виде
А исходники утекали? Может всё-же в бинарнике?

Ответить
0
Развернуть ветку
Groosha

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

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

Ответить
1
Развернуть ветку
Евгений Томсон

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

Ответить
0
Развернуть ветку
Aeterna Nox

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

Ответить
0
Развернуть ветку
Мутный корабль

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

Ответить
0
Развернуть ветку
Кирилл Сергеев

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

Ответить
0
Развернуть ветку
Читать все 39 комментариев
{"hash":"600601b8","params":{"id":"dtfru","service":1,"title":"\u041f\u0440\u044f\u043c\u043e\u0439 \u044d\u0444\u0438\u0440","isLegacy":false}}