Чтение онлайн

ЖАНРЫ

Право на сбой. Нулевой Игрок
Шрифт:

— И что это даст? — нахмурился Бастиан. — Игроки просто перебьют их у входа.

— Не-а, — я покачал головой. — Потому что их бегство активирует другой протокол. Протокол mass_event_npc_evacuation. Он был написан для глобальных катаклизмов. Когда он активен, все задействованные NPC становятся нематериальными и неуязвимыми для игроков, чтобы не перегружать сервер расчетами урона. Они просто пробегут сквозь игроков, как призраки. Квест будет невозможно выполнить. Он «зависнет». Игроки пожмут плечами, напишут в саппорт о «глючном квесте» и пойдут дальше. Никто ничего не заметит.

Я обвел их взглядом.

— Это будет наш тест. Наша

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

Я закончил. План был на столе. Асимметричный. Странный. И, возможно, единственный, который у нас был.

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

— Низкий риск, — сказала она. — Низкие затраты. Потенциально высокий результат в виде бесценных данных о поведении системы. Как венчурная инвестиция — идеально. Я согласна.

Она посмотрела на Бастиана. Капитан все еще хмурился, его прямолинейная натура явно протестовала против такой «нечестной» войны. Но он посмотрел на меня, потом на Элару, и в его глазах появилось уважение. Он увидел логику.

— Это… необычно, — признал он. — Но я поклялся быть твоим мечом. Если ты говоришь, что битва должна начаться так, значит, так тому и быть.

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

Глава 8

Гоблины тоже плачут

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

Цель: деревня гоблинов в локации «Зеленая Долина». Задача: совершить акт божественного вмешательства с помощью SQL-инъекции.

На моем внутреннем интерфейсе вспыхнуло зашифрованное сообщение от Элары. Ник отправителя был E_CONOMIST, иконка — идеально сбалансированные весы.

Информационный шум в секторах 3 и 5 достиг пикового значения. Рыночные боты сошли с ума из-за ложной волны дефицита руды. Отвлекающий маневр Бастиана в Старом Квартале также привлек внимание патрулей. У тебя есть окно. Не про*би его.

Я усмехнулся. Элара даже в апокалипсисе оставалась бизнес-леди.

Постараюсь не обрушить ваши котировки, мэм, — мысленно отправил я ответ и полностью погрузился в debug_mode.

Реальность схлопнулась, сменившись неоновым ландшафтом чистого кода. Я больше не был трактирщиком. Я был навигатором, плывущим по рекам данных. Вокруг меня проносились гигантские массивы, похожие на небоскребы из света, — это были основные модули движка. Где-то внизу, как багровые прожекторы, рыскали системные «сторожа» — watchdog-процессы, выискивающие аномалии. Они были медленными и тупыми, рассчитанными

на отлов простых ботов. Сегодня я был не простым ботом.

Я нырнул в один из транспортных потоков, маскируясь под обычный пакет данных о погоде. weather_update: clear_sky. Ничего подозрительного. Так, под прикрытием фальшивого солнечного дня, я добрался до нужного мне континента кода — сектора, отвечающего за low_level_mobs.

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

Я нашел нужный мне блок. goblin_village_instance_013. Он был похож на заросший, грязный узел, от которого во все стороны тянулись кривые, неоптимизированные связи. Я осторожно «просканировал» его, ища вход.

Препятствие номер один. Даже здесь, в этих трущобах, сидел свой охранник. Простенький daemon, проверяющий целостность файлов. Если я изменю хоть один байт, он поднимет тревогу. Значит, прямой путь был закрыт. Но мне он и не был нужен.

Моя цель была не в самом коде деревни, а в том, как он общался с другими системами. Я начал анализировать его API calls. И нашел то, что искал. Старая, как мир, уязвимость в алгоритме поиска пути. pathfinding. Он принимал на вход данные об окружении, чтобы гоблины знали, где стены, а где — проход. Но у него не было нормальной валидации входящих данных. Дыра размером с Гранд-Каньон.

Я начал готовить свой «подарок». Небольшой, изящный скрипт. payload. Он не изменял код гоблинов. Он просто отправлял им ложные данные об окружении. Он должен был заставить их поверить, что в самой глубокой части их пещеры, там, где по скрипту был тупик, только что проснулся world_boss_ancient_dragon.

Внезапно мой датчик угрозы взвыл. Один из багровых прожекторов «сторожей» отклонился от своего маршрута и медленно двинулся в мою сторону. Это был не обычный watchdog. Это был патруль посерьезнее, возможно, среагировавший на фоновую активность Элары и Бастиана.

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

Я выждал еще несколько секунд, пока сердце не перестанет колотиться в горле. Пронесло. Окно возможностей сужалось.

Пора.

Я нашел процесс, отвечающий за вождя гоблинов. goblin_chieftain_Grolnok. Его цикл был еще проще, чем у его сородичей, но в нем была одна интересная функция: shamanic_vision. Раз в сутки она генерировала ему «видение от духов предков» — случайную картинку из библиотеки ассетов, чтобы добавить немного колорита. Я собирался подсунуть ему свое «видение».

Я открыл соединение с pathfinding и одним точным, выверенным движением отправил свой payload.

cat | nc goblin_chieftain_Grolnok 1337

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

Поделиться с друзьями: