Предисловие Данный текст представляет собой аналитический обзор, ни в коем случае не являющийся руководством к действию. Наша позиция такова, что игроки не должны использовать какие-либо нечестные методы, чтобы получить преимущество перед другими - какие бы причины ни приводились в оправдание. Это вопрос чести каждого игрока; к тому же все равно рано или поздно тайное станет явным.
Тем не менее, возможно, знание различных способов мошенничества поможет поймать мошенника. И, учитывая то, что большинство игроков все- таки играет честно, мы решили, что этот аналитический обзор будет для них небесполезен.
Вступление
Итак, вашему вниманию предлагается обзор программных способов мошенничества в игре Counter-Strike. Рассмотрены практически все известные, высказан ряд предположений по неизвестным, а также рассмотрены некоторые другие вещи. Поскольку практически все существующие программы такого рода написаны англоязычными пользователями, а их названия уже примелькались, первым всегда идет англоязычное название. К некоторым прилагаются картинки, но не ко всем, ибо ряд "трюков" виден только в динамике.
В ряде мест используется английское слово cheat (чит). Один из вариантов перевода глагола to cheat - "вести нечестную игру" (согласно словарю "Лингво"). Согласно же словарю Вебстера, это "получение преимущества путем лжи или жульничества". Данный термин может использоваться, когда пользователь получает игровое преимущество, применяя с известной целью:
*специальные программы, влияющие как-либо на игру;
*специальное аппаратное обеспечение;
*модификацию исходной программы;
*ее документированные возможности, заранее объявленные мошенническими (так называемые cheat codes).
Второй необходимый нам англоязычный термин - exploit. Наиболее подходящий нам перевод этого слова - "использовать что-то в своих интересах". В терминологии компьютерной безопасности это слово имеет отрицательную окраску и обозначает "использовать ошибки или недоработки в программе в своих интересах".
I. Виды читов
1. Внешний aimbot (также известен как autoaim). Самый известный чит - в смысле, почти все о нем знают и поэтому часто обвиняют других в его использовании. Имеется несколько вариантов его, наиболее широко распространенный из них - csh4x0rz Aimbot v1.0. Говорят, существует также aimbot от death_adder. Но поскольку раздобыть его не удалось, был протестирован только csh4x0rz Aimbot и его же autoaim (это тот же aimbot, где исправлены ошибки и улучшена производительность на слабых компьютерах).
Принцип работы этого aimbot достаточно прост: он анализирует изображение на экране и, обнаружив внутри квадрата заданного размера участок заданного цвета, "двигает" мышь так, чтобы этот участок попал в центр экрана (там же обычно находится прицел).
Хорошая в теории идея оказалась неприменима на практике, и вот почему:
*Aimbot не делает разницы между игроками и предметами, он ориентируется только на цвет. Бегать с включенным aimbot на всех картах, кроме de_dust, достаточно сложно, поскольку он постоянно пытается "повернуть" игрока в какую-либо сторону;
*Aimbot не работает с default-моделями и требует замены всех моделей. После замены все контр-террористы отображаются моделью L337 Krew красного цвета, а все террористы - моделью L337 Krew зеленого цвета. Это неудобно для зрительного восприятия игры и позволяет легко вычислить использующих aimbot простым вопросом: "А какая у меня сейчас модель?";
*во время стрельбы aimbot скорее мешает, чем помогает. В частности, если противников больше одного в поле зрения, он постоянно перескакивает прицелом с одного на второго, третьего и т.д. При появлении в радиусе видимости другого игрока прицел начинает двигаться и продолжает находиться в постоянном движении, что практически исключает успешную стрельбу из снайперских винтовок;
*Aimbot несколько тормозит машину (в тесте величина FPS упала с 49 до 32 и стала нестабильной). В readme бота написано: причина торможения - "медленный" компьютер. Hе смертельно, но неприятно;
*Самый большой недостаток. Aimbot "видит" только то, что видит игрок. Он не наведется на врага, который сидит в темном углу или за укрытием (даже если он только что туда зашел). Если игрок не будет постоянно оглядываться по сторонам, aimbot ему не поможет. Если будет - aimbot ему и так не нужен.
Вывод: данный aimbot не годится для начинающих игроков. Возможно, он будет очень полезен, если с ним поиграть месяц-два и привыкнуть к нему, но в любом случае куда полезнее будет поиграть месяц-два без него.
Так выглядят модели контр-террористов и террористов, которые использует aimbot.
2. Внутренний aimbot (можно также назвать его "headshot script"). Все недостатки предыдущего aimbot проистекают из того, что это отдельная программа, от CS не зависимая и поэтому не имеющая ни доступа к его данным (например, координатам игроков), ни возможности точной установки параметров (например, установить прицел прямо на игрока). Однако не так давно появились и другие aimbot, которые заменяют собой кусок кода, отвечающего за наведение на цель. Поскольку такой aimbot имеет доступ ко всем данным игры, он не стреляет в своих, наводится на противника, даже если игрок его не видит (игрок ослеплен или противник в темноте), точно наводится даже на дальних дистанциях и не обращает внимания на убитых. Существуют как минимум две различные версии этого aimbot: первая сделана русским программистом, скрывающимся под прозвищем Vasily Pupkin, вторая - американцем Nemseh. В Сети есть две страницы, с которых можно скачать демки с записью работы этих двух aimbot'ов: http://clientbot.narod.ru/ и http://members.aol.com/inemseh/. Но самих программ там нет, поэтому пришлось смотреть только на демки. Также на странице Nemseh предлагается купить чит за $500.
3. Autoshoot. Внешняя программа. Автоматически производит выстрел, как только противник пересекает центр экрана. Современные версии умеют учитывать задержку в пинге и стрелять раньше или позже. Менее известный чит; принцип работы совпадает с использованным во внешнем aimbot. Унаследовал все недостатки вышеописанного aimbot; разве что игрока не поворачивает, а инициирует стрельбу. В результате он лупит по стенам, иногда по своим игрокам и по вспышкам от гранат. Бесполезный чит.
4. Sniper blackout fix. Внешняя программа. Убирает черный экран вокруг прицела снайперских винтовок, таких как 4-5 и 4-8, при включении приближения. Теоретически полезен, хотя практически угол обзора все равно остается небольшим. При инсталляции заменяет текстуры. Программа висит в памяти, торможения отмечено не было. При использовании другого оружия никак себя не проявляет. Этот чит мог бы быть нейтрализован разработчиками игры с помощью патча, но почему- то пока такого патча не выпустили. Впрочем, полезен sniper blackout fix только снайперам.
Обратите внимание на отсутствие черного круга вокруг снайперского прицела.
5. Wallhack ("прозрачные стены"). Внешняя dll. Имеется несколько разновидностей данного чита. Все они работают только в случае, если игрок использует драйвер OpenGL: перехватывая установку параметра alpha, отвечающего за прозрачность текстур. Самые навороченные из них имеют массу дополнительных настроек, позволяющих, к примеру, не рисовать вспышки от flashbang и клубы дыма, рисовать цельный прицел, изменять коэффициент прозрачности стен и убирать тени от объектов. К их недостаткам можно отнести глючность, сложность установки и настройки, работу только с OpenGL 1.1, неэстетичный вид игры и трудность ориентации в пространстве, а также побочные эффекты (например, ослепление flash-гранатой, взорванной за стеной). Использование чита легко обнаружить по поведению игрока.
Стены по центру экрана практически отсутствуют.
6. Speed cheat. Внешняя программа. Изменяет коэффициент деления системного таймера Windows, в результате чего все системные задачи начинают работать быстрее (или медленнее). С ее помощью игрок может в считанные секунды добежать до базы противника и за одну секунду убить всех врагов из пулемета. Существуют два варианта данного чита: самый старый увеличивал скорость до максимума, но сейчас уже непригоден к использованию, так как современные сервера определяют его. Второй чит позволяет плавно менять скорость и поэтому не определяется сервером до тех пор, пока прирост скорости не достигнет определенного уровня. Стоит заметить, что уровень этот достаточно мал и эквивалентен прибавке к скорости примерно на 30%. Данный чит работает и в Half-Life, поскольку весь код, отвечающий за перемещение игрока, находится на клиентской стороне, что позволяет нормально играть людям с пингом больше 100. Его использование легко обнаружить по поведению игрока, поэтому жулики такого рода быстро выгоняются с серверов. Существуют также глюки, связанные с процессором Athlon, напоминающие эффект от speed cheat, хотя сам пользователь никакого мошенничества не использует.
7. Autofire, также burstfire, quickfire. Внешняя программа. Увеличивает скорость стрельбы (так называемый burst fire). Стреляет быстрее, эмулируя частые "нажатия" левой кнопки мыши. Активизируется при нажатии третьей кнопки. Практическая польза невелика, поскольку для изменения количества выстрелов приходится выходить из игры, что малоприемлемо. Чит практически непригоден при игре в Интернете, где задержки могут достигать значительной величины. Не увеличивает максимальную скорость стрельбы оружия.
8. Lagshot. Внешняя программа. Приостанавливает игрока, прекращая на время выстрела трансляцию его координат на сервер, что повышает точность стрельбы (на сервере проверяется скорость игрока при определении точности попадания) и облегчает уклонение от вражеских пуль, поскольку все стреляют в фиктивное местоположение. После выстрела скорость восстанавливается снова. Чит работает путем замены кода в client.dll, из-за чего не действовал в версии CS 1.1, но автор оперативно оценил ситуацию, и сейчас уже доступен новый вариант.
9. Lambert. Внешняя программа. При отрисовке моделей игроков устанавливает для них флаг "является источником света", что облегчает прицеливание и стрельбу в темных местах. Чит работает путем замены кода в Half-Life, из-за чего не действовал в версии 1.1.0.6, но автор, опять же, выпустил новый вариант.
10. Smokehack. Bat-файл, меняющий местами два спрайта, которые отвечают за прорисовку дыма от дымовой гранаты и дыма от оружия. Это снижает (но не нивелирует полностью) эффект задымленности от гранат. Не работает в версии CS 1.1, поскольку там проверяется целостность спрайтов.
11. Chasecam. Внешняя программа. Позволяет игроку "выйти" из своего тела (как будто находясь в режиме spectator) и, например, посмотреть за угол, нет ли там противника, прежде чем совершить вылазку. Само собой, игрок в это время стоит и ничего не делает, что по прошествии некоторого времени обычно вызовет подозрения других игроков. По этой причине назвать его пригодным к употреблению трудно. Последняя версия работает и на серверах с lock camera mode.
12. Wireframe. Внешняя dll. Рисует "каркас" карты, показывающий игроку, что происходит на карте с путями впереди (это трудно объяснить, лучше увидеть). Чем-то напоминает "прозрачные стены". Работает только с OpenGL.
Комментарии излишни.
Комментарии излишни.
13. Nightvision. Внешняя dll. Увеличивает яркость в очень темных местах. Не имеет зеленого оттенка, как стандартные NightVision Googles из Counter-Strike. Очевидно, не нужно покупать. На картинках изображены внутренности дома на карте cs_mansion при полном выключенном освещении, но включенном чите.
Так темные локации выглядят у игроков, использующих жульнический nightvision.
14. Allradar. Внешняя dll. Кроме своих игроков, показывает на радаре также и противников с указанием их координат.
Обратите внимание на желтые элементы на радаре - это противники.
15. Smflash. Внешняя dll. Полностью убирает эффекты от smoke- и flash-гранат.
Дымовая граната лежит, а дыма нет.
II. Exploits (баги)
Здесь собраны ошибки в программе (т.е. поведение программы, явно не предусмотренное разработчиками).
1. Разного рода скрипты и программы, приводящие к падению сервера. "Валят" HL-сервер путем (как правило) переполнения буфера или эксплуатации других ошибок. Эти ошибки постоянно исправляют, но тут же находятся новые.
2. Неуязвимость к стрельбе в сидячем положении в воде. Если игроки целиком находятся в воде, огнестрельное оружие не наносит им повреждений. Существует известная ошибка, из-за которой игроку, присевшему в воде, также не наносятся повреждения огнестрельным оружием, несмотря на то, что часть его тела находится над водой. Происходит это из-за неправильного просчета положения модели относительно поверхности воды. Достаточно многие игроки используют эту ошибку в своих целях. К сожалению, авторы Counter-Strike не в состоянии самостоятельно исправить ее, поскольку она находится в движке Half-Life, исходники которого у них отсутствуют.
3. Strafe jumping (он же bunny hopping). Из-за ошибки в движке от id Software появилась возможность практически неограниченно набирать скорость путем выполнения некоторой достаточно нелогичной для разгона последовательности действий. Сюда же можно отнести и т.н. Strafe jumping: по непонятной причине игрок, который прыгает боком вперед, движется несколько быстрее, чем игрок, который прыгает прямо или просто бежит вперед. Логическое объяснение этому факту найти сложно, что позволяет квалифицировать strafe jumping как мошенничество, основанное на использовании ошибок.
Организатор международного турнира по Counter-Strike Фрэнк Нуччио выразил эту мысль таким образом: "Strafe jumping не использовался и вообще запрещен к использованию в турнире. Эта особенность Counter-Strike не планировалась разработчиками. Она дает абсолютно мошенническое преимущество. Команды, игроки которых будут использовать данную тактику в любом турнире CPL, будут дисквалифицированы".
В том же духе высказался лидер одной из влиятельных американских команд Rumble in The Desert после продолжительных дискуссий: "Вот что, ребята: официальная позиция Лиги определяет Strafe jumping как использование ошибки в коде игры. Это не является читом по определению, но мы уверены, что разработчики игры сделали данную ошибку несознательно. По этой причине ее использование недопустимо в играх Лиги".
К сожалению, авторы Counter-Strike не в состоянии самостоятельно исправить также и эту ошибку, поскольку ее программная основа находится в движке Half-Life.
4. Hostage jumping. Как известно, можно запрыгнуть на голову заложнику, который следует за тобой, после чего начать прыгать у него на голове. Заложник тоже начинает прыгать, в результате игрок, отталкиваясь от него же в прыжке, запрыгивает выше, а заложник следует за ним. Появляется возможность запрыгнуть в те локации карты, которые иначе были бы совершенно недоступны. Как и в случае со Strafe jumping, это совершенно нелогично и расценивается как использование ошибки (к сожалению, весь код управления заложниками выглядит как одна большая ошибка). Впрочем, использовать данную ошибку в динамичной игре достаточно трудно из-за сложности таких прыжков.
Cs_assault: я запрыгнул на ящик перед задней дверью.
Cs_assault: я запрыгнул на лампу справа от входа.
III. Противодействие мошенничеству
Первые читы появились вместе с первыми играми. Сейчас назрела новая индустрия - индустрия читов к онлайн-играм. Разумеется, борцы за честную игру не остались равнодушными и начали выпускать разные программы, которые могли бы обнаружить мошенника или как-либо противодействовать ему. Самой известной из таких программ является, несомненно, PunkBuster (http://www.punkbuster.com/). Это бесплатная программа, работающая по принципу "клиент-сервер". Существуют сервера, защищенные PunkBuster. Если игрок хочет играть на таком сервере, он должен скачать клиент PunkBuster и запустить его перед игрой. Клиент передает на сервер информацию о программах, запущенных на компьютере игрока, и контрольные суммы некоторых файлов, а сервер решает - играет игрок честно или использует читы.
Естественно, такой ход не ускользнул от внимания разработчиков читов. Появились первые программы, позволяющие играть на защищенных серверах, используя читы. На данный момент таких программ всего несколько. Авторы PunkBuster постоянно вводят новые блоки защиты, авторы читов постоянно их обходят или придумывают новые методы взлома. Технология, которую использует PunkBuster, рассчитана на уровень среднего пользователя и легко обходится профессиональным взломщиком (каковыми и являются большинство авторов читов). Скажем, существует программа pbhack, которая способна скрыть от PunkBuster факт использования читов. Существует также PunkBuster emulator, который эмулирует всю внешнюю функциональность PunkBuster, не производя при этом никаких проверок. Hайти эти программы в Интернете недавно было очень легко, сейчас стало труднее, но все же можно. Кроме того, PunkBuster стоит на очень малом количестве игровых серверов, и эти сервера предназначены, как правило, для клановых или турнирных боев, поэтому посторонним играть на них не разрешают. В частности, автор статьи не знает ни одного известного российского сервера, на котором был бы установлен PunkBuster.
А вот что пишет о PunkBuster один из авторов читов для CS, который его взламывает: "Все попытки бороться с читерством выглядят жалко. Одной из лучших таких попыток была программа PunkBuster. Но некоторые из нас непрерывно взламывают PunkBuster, находя в нем ошибки и различные возможности противодействия. Поэтому мы можем продолжать мошенничать даже на серверах, защищенных PunkBuster, где люди даже не подозревают, что мы жульничаем, поскольку слепо верят, что PunkBuster - надежная программа против читов. На самом деле она набита ошибками не меньше, чем сами игры".
IV. А почему, собственно, люди пишут читы?
Причин много. Большая часть из них напоминает те, по которым люди пишут и компьютерные вирусы. Одни хотят самоутверждения, другим просто интересно поковыряться в чужом коде. Есть и те, чей уровень игры значительно ниже навыков программирования, что позволяет им восполнить недостаток игрового опыта техническими средствами. Вот мнение автора нескольких читов для CS: "Лично я - честно - создаю читы, чтобы научиться. Взламывать игры вовсе не так просто, как создавать странички с чужими программами. Я был вынужден сесть за книги и потратить кучу времени, чтобы сделать эти программы, не для того, чтобы испортить вам игру или кому-то напакостить, а чтобы научиться самому. Думаю, остальные взломщики работают по той же причине, поскольку мы не получаем денег за свою деятельность. Я испытываю восхищение, когда моя программа начинает работать, и я могу делать с игрой что хочу. Для меня это гораздо важнее, чем получить первый приз на турнире по Counter-Strike..."
Недавно автору статьи удалось пообщаться с одним из наших известных авторов читов (он пожелал остаться неизвестным). Вот что он написал нам (с небольшими сокращениями; молодежный сленг заменен на русскоязычные эквиваленты):
"Я начал писать читы после того, как понял, что мастерство некоторых игроков на серверах, где я играю, гораздо выше моего. Мне и многим другим людям не хочется зря растрачивать свое время на обучение ненужным, в общем-то, вещам, таким, например, как умение "вести" мышкой движущуюся цель. И в то же время мы не хотим постоянно умирать только по той причине, что на сервер зашел опытный игрок, глупо посвятивший свою жизнь игре в CS. Мы не используем читов против равных - только против опытных игроков, мешающих нам нормально играть. В общем, как только на сервере появляются опытные игроки - наш скилл тут же возрастает благодаря использованию читов. Кроме того, это так приятно - зарезать много возомнившего о себе игрока ножом пять раз подряд...
...Интерес? Мне интересно играть и с читами, и без них; читы просто помогают легче играть.
...Другие игроки ни разу не заподозрили в нас читеров - мы не делаем ничего, что было бы не под силу любому опытному игроку...
...Мы считаем, что это хорошо - облегчить себе и другим игрокам игру, не приобретая при этом ненужного опыта..."
Как говорится, вашу бы энергию - да в мирных целях... ©