Код Творца: Суверенный данж против Архитекторов Первой Эпохи

- -
- 100%
- +

Код Творца:
Суверенный данж
Серия «Суверенный данж» • Книга 5
Нейтон Патчер
Глава 1. Нулевое кольцо привилегий
В третьем серверном отсеке подземного бункера «Кедр-4» пахло паленым танталом, едким ионизированным озоном и сухим сибирским морозом, который сочился сквозь трещины внешней гермодвери. Три часа назад штурмовая группа ликвидаторов корпорации «НейроСфера» попыталась вскрыть входной шлюз термобарическими резаками. Штурмовики остались лежать в каменистом распадке у подножия сопки, превращенные в ледяные статуи защитными турелями периметра, но сам бункер заплатил за победу предельным износом узлов.
В ушах Максима гудел низкий, утробный вой циркуляционных насосов. Жидкий азот со свистом пробивался сквозь наспех заваренную медную трубку охлаждения центральной стойки. Мелкая белая изморозь мгновенно покрывала оплетку силовых кабелей, стелющихся по бетонному полу.
— Макс, прием. Если ты сию секунду не сбросишь нагрузку с четвертого распределителя, у нас разорвет криогенный контур к чертовой матери, — хриплый, простуженный голос Алёны ворвался в интерком сквозь треск статических разрядов. — Я держу давление разводным ключом и честным словом, но фланец уже пошел винтом. Здесь минус сорок, у меня пальцы к перчаткам примерзают!
Максим сидел в глубоком анатомическом ложе нейроинтерфейсного терминала, полуприкрыв веки. Его пальцы, перепачканные графитовой смазкой и серой пылью от разорванных кабельных каналов, лежали на сенсорной панели ввода. Виски стягивал тяжелый стальной обруч квантового синхронизатора — трофейный шлем полевого координатора «НейроСферы», грубо перепаянный и подключенный напрямую к шине советского вычислительного комплекса.
— Держись, Алёнка. Еще сорок секунд, — отозвался он, не размыкая пересохших губ, транслируя голос прямо через аудиоподсистему бункера. — Орбитальный шлюз завершает синхронизацию секторов. Я не могу оборвать нисходящий поток, иначе половина узлов Данжа потеряет фазировку во внешнем кластере. Спутники связи сейчас над горизонтом, окно видимости схлопнется через две минуты.
— Ты безумец, Патчер, — выдохнула она, но в ее голосе сквозь раздражение пробилось теплое, упрямое облегчение. На заднем плане глухо звякнула тяжелая сталь о чугунную трубу, зашипел перегретый клапан сброса пара. — Датчики внешнего периметра встали на боевой взвод. Второй эшелон ликвидаторов пока не наблюдается, радары чисты на сорок километров кругом. Но термосканеры фиксируют активность орбитального сканера корпорации. Нас прощупывают сквозь ионосферу. Долго мы под таким лучом не скроемся.
— Знаю. Переключаю питание криогенной помпы на резервную радионуклидную батарею. Сброс давления пошел.
Максим щелкнул тумблером на физической панели слева от ложа. Тяжелый соленоид с глухим металлическим щелчком перебросил контакты. Вой насоса сменился ровным басовитым гулом, стрелка манометра на криогенном баке дрогнула и медленно поползла из красной зоны в безопасный желтый сектор.
[Система: Аппаратная миграция Суверенного Данжа завершена]
[Топология: Распределенная сеть узлов «Кедр-4» — Орбитальный сегмент «Стрела-7»]
[Стабильность квантового моста: 99.84%]
[Нагрузка на локальный вычислитель: Номинальная]
Максим глубоко вдохнул ледяной воздух серверной, чувствуя, как металлический привкус оседает на корне языка. Тело ломило от многочасовой статической неподвижности. Мускулы шеи одеревенели, под левой ключицей пульсировала тупая боль — откат от перегрузки нейронных коннекторов, когда час назад приходилось перехватывать управление турелями в режиме прямого синаптического форсажа.
Но физическая усталость отступала перед тем, что разворачивалось перед его внутренним взором.
В углу аппаратного зала, за толстой бронированной перегородкой из свинцового стекла, мерно мерцал захваченный у ликвидаторов трофей: мобильный квантовый суперкомпьютер «Оникс-9». Сверхпроводящий монолит размером с армейский оружейный сейф, выкрашенный в матовый антрацитовый цвет с полимерным логотипом «НейроСферы» — сплетенными нейронными аксонами, стилизованными под уроборос.
Корпоративные взломщики привезли этот вычислитель, чтобы гарантированно стереть ядро Данжа в порошок, выжечь его до последнего байта и эвакуировать аппаратные логи. Они не рассчитывали, что хозяин Данжа не станет обороняться по правилам стандартных сетевых протоколов, а обрушит на их терминалы встречную лавину самокомпилирующихся фаерволов и обратит квантовые шифраторы против их собственных операторов.
Теперь оптоволоконные жгуты толщиной в человеческую руку соединяли «Оникс-9» с древними релейными стойками «Кедра-4». Чужеродная, стерильная технология корпоративной элиты вгрызлась в архаичную кремниевую плоть советского бункера.
И именно там, в чреве квантового массива противника, Максим наткнулся на нечто невозможное.
Когда автоматический декриптор взломал первичные слои криптографической защиты «НейроСферы», из-под мусора служебных инструкций и дампов памяти проступил системный след. Не просто скрытый канал связи с центральным офисом корпорации в Новосибирске или Токио. Нет.
Там зияла аппаратная червоточина. Физический сетевой адрес, не имеющий отношения к протоколам глобальной Сети и игровым серверам виртуальной реальности «Пангея-Онлайн».
[Внимание! Обнаружен аномальный системный шлюз]
[Порт: 0x0000 — Прямое адресное пространство шины Core]
[Смещение памяти: 0x0000000000000000 — 0x0000000000000FFF]
[Уровень изоляции: Нарушен]
[Предупреждение: Доступ к сегменту ограничен аппаратными протоколами Первой Эпохи]
Максим замер, вглядываясь в мерцающие зеленые строки шестнадцатеричных адресов на терминале.
Вся «Пангея-Онлайн», со всеми ее материками, миллионами зарегистрированных игроков, симуляцией физики ветра, шелестом травы, драконами, замками и заклинаниями великих магов, функционировала в безопасном пользовательском пространстве — в так называемом третьем кольце привилегий (Ring 3). Игроки думали, что они творят чудеса, когда читали заклинания десятого ранга и призывали огненные бури. На самом деле они просто дергали предопределенные высокоуровневые API-функции игрового движка, жестко ограниченные песочницей виртуальной машины.
Даже системные администраторы корпорации и штатные мастера гильдий работали в кольцах 1 и 2 — виртуализированных прослойках драйверов и сервисов надзора.
Но этот порт вел туда, куда ни один живой человек, ни один системный инженер «НейроСферы» не имел права ступать.
Нулевое кольцо. Ring 0. Уровень ядра центрального процессора. Аппаратный базис, где нет полигонов, нет текстур, нет классов персонажей, уровней прокачки и параметров силы или интеллекта. Где существуют только прерывания процессора, таблицы страниц памяти, регистры общего назначения и прямой доступ к транзисторам вычислительного кремния.
— Алёна, — негромко позвал Максим, переключая микрофон на локальный канал.
— Что там еще? — в динамике послышался глухой металлический лязг, девушка с усилием затягивала стопорную гайку на магистрали охлаждения. — Если скажешь, что сгорел второй инвертор, я брошу этот ключ и пойду спать прямо в снег.
— Инвертор цел. Смотри на телеметрию квантового моста. Я вывожу поток на твой переносной планшет.
Пауза затянулась на несколько секунд. Слышно было только ее прерывистое дыхание сквозь защитный респиратор. Затем дыхание перехватило.
— Макс... Это что за мусор в адресной строке? Этого диапазона не существует в спецификациях «Пангеи». Архитектура квантового кластера корпорации не поддерживает нулевые порты такого типа. Там же... там базовые микрокоды! Ты куда собрался лезть?
— В фундамент, — ответил Максим, и в его голосе прорезалась холодная, отточенная сталь профессионального азарта системного архитектора. — Корпорация построила свой сверкающий виртуальный мегаполис на чужом фундаменте, Алёна. Они не создавали ядро «Пангеи» с нуля. Они накатили сверху свои пользовательские библиотеки, нарисовали текстуры эльфов и фаерболов, создали донатные магазины и аукционы. Но двигатель под капотом... двигатель был собран задолго до них.
— Макс, стой. Не делай глупостей! — ее голос сорвался на тревожный крик. — Ты только что вышел из боя! Твои нейроны перегружены, медиаторы на нуле! Если там сработает аппаратная защита ядра, твой мозг сварится прямо в шлеме! Это не виртуальная смерть с потерей опыта, это физический микроволновый пробой по зрительным нервам!
— У меня нет выбора. Корпорация стягивает спутники для повторного сканирования. Через два часа они вычислят точные координаты «Кедра-4» методом триангуляции теплового следа. Мы не сможем вечно отбиваться турелями в тайге. Единственный способ выжить — перехватить корневые привилегии системы и вышвырнуть «НейроСферу» из управляющего контура навсегда.
— Максим!..
— Контролируй температуру моего криогенного контура, — отрезал он мягко, но бесповоротно. — Если частота сердечных сокращений перевалит за сто восемьдесят — вколи мне кубик адреноблокатора прямо через порт жизнеобеспечения ложа. Я пошел вниз.
Он перевел тумблер нейроконнектора в крайнее верхнее положение: [Полное погружение: Аппаратный режим].
Мир бункера мгновенно схлопнулся.
Звук текущего азота, запах гари, холод сибирской ночи, тревожный голос женщины — все растворилось в абсолютной, ледяной вспышке белого света.
***
[Инициализация прямого контекста выполнения]
[Сброс таблиц дескрипторов: GDT / IDT]
[Переход из Ring 3 (Userland) в Ring 0 (Kernel Core)]
[Внимание: Стек пользовательских абстракций дерегистрирован]
[Физика игрового мира: Отключена]
[Рендеринг полигональных сеток: Отключен]
Падение не сопровождалось чувством гравитации. Не было ни свиста ветра, ни мелькания облаков, как это бывает при прыжках с небесных островов «Пангеи».
Реальность просто рассыпалась на составляющие ее атомы логики.
Максим стоял на черной, идеально гладкой поверхности, простиравшейся во все стороны до бесконечности. Это не был камень, металл или полированный обсидиан. Это был монолитный массив чистого, сверхпроводящего кремния, охлажденного почти до абсолютного нуля.
Под этой зеркальной антрацитовой гладью, на глубине сотен логических слоев, с чудовищной скоростью пульсировали широкие золотые магистрали — системные шины данных. Каждые несколько долей пикосекунды по ним проносились колоссальные массивы квантовых суперпозиций, рассыпаясь ослепительными искрами шестнадцатеричных опкодов: `0xFF`, `0x00`, `0x7A`, `0xBC`.
Вверх вздымались циклопические монолитные колонны прямоугольного сечения. На их гранях не было барельефов или орнаментов — лишь строгие, математически выверенные ряды логических вентилей, выгравированные когерентным ультрафиолетом. Колонны гудели на базовой тактовой частоте ядра: тридцать гигагерц квантового такта резонировали в виртуальном теле Максима, отзываясь покалыванием в кончиках пальцев.
Здесь не существовало привычного интерфейса игрока. Ни полосы здоровья, ни шкалы маны, ни инвентаря, ни книги заклинаний.
Максим взглянул на свои руки. Они состояли не из цифровой кожи и полигонов его персонажа — Владыки Данжа. Они мерцали тонкой сеткой полупрозрачных трассировочных линий, сквозь которые просвечивали шестнадцатеричные адреса текущего указателя инструкций: `RIP = 0x7FFF0000A1F0`.
— Чистая архитектура фон Неймана в квантовом базисе, — прошептал Максим. Его голос прозвучал без эха, сухим щелчком разряда в вакууме. — Никакой магии. Никакой мистики. Только логика, регистры и бесконечный цикл выборки инструкций.
Он сделал шаг вперед по кремниевой плите. Под его ногой по зеркальной поверхности разошлись концентрические круги золотистых битовых масок.
Воздух — вернее, то информационное поле, которое заменяло здесь атмосферу, — внезапно сгустился. Тактовая частота колонн скачкообразно взлетела, переходя с низкого ровного гула на пронзительный ультразвуковой визг.
[Внимание! Обнаружено нарушение контекста сегментации]
[Зафиксирован чужеродный поток выполнения: Thread_ID = 0xDEADBEEF]
[Уровень привилегий потока: Неопределен]
[Инициализация системного сервиса безопасности ядра...]
Прямо перед Максимом, в пятидесяти метрах по курсу, кремниевый монолит пола треснул без единого звука. Из образовавшегося разлома, источающего резкое фиолетовое свечение аппаратных исключений, начала подниматься фигура.
Это не был монстр из бестиария «Пангеи». Не демон, не костяной дракон и не титан бездны.
Существо представляло собой строгую многогранную геометрическую конструкцию из матового черного феррита высотой более четырех метров. Правильный октаэдр в основании, окруженный вращающимися концентрическими кольцами из сияющих золотых дорожек печатных плат. В центре конструкции горело единственное вертикальное око — линза прямого оптического считывателя, внутри которой с бешеной частотой сменялись таблицы системных прерываний.
Вместо конечностей существо пронизывали длинные, игловидные лучи когерентного кода, вибрирующие с частотой аппаратного таймера.
Над геометрическим исполином вспыхнул системный маркер, набранный моноширинным терминальным шрифтом без сглаживания:
[Исполнитель Низкого Уровня: Daemon-0]
[Класс процесса: Системный супервизор корневого пространства]
[PID: 0x00000001]
[Привилегии: CPL = 0 (Ring 0 — Supervisor)]
[Статус: Активен. Защита таблицы дескрипторов прерываний]
Око демона сфокусировалось на Максиме. Золотые кольца вокруг ферритового тела закрутились с чудовищным ускорением, сливаясь в сплошную светящуюся сферу.
[Протокол: Идентификация субъекта]
[Запрос: Сертификат корневого центра авторизации Создателей]
[Ответ: Сертификат отсутствует]
[Вердикт: Изолировать и уничтожить некорректный сегмент памяти]
[Системный вызов: Fault_Handler -> SIGKILL]
— Назад! — инстинктивно скомандовал Максим и привычным мысленным усилием активировал свое сильнейшее оборонительное заклинание Данжа: [Суверенный барьер: Кристаллический щит бездны].
Ничего не произошло.
Ни фиолетовых кристаллов, ни силового поля, ни защитных рун.
В интерфейсе сетчатки вспыхнул сухой системный отказ:
[Ошибка вызова: Инструкция кольца 3 недопустима в пространстве кольца 0]
[Исключение: Прерывание 0x0D — General Protection Fault]
[Код ошибки: 0x00000000]
[Привилегия текущего дескриптора кода (CPL = 3) превышает допустимый уровень сегмента (DPL = 0)]
Daemon-0 не стал ждать.
Одно из его золотых колец сжалось, превратившись в узконаправленный луч чистого лазерного излучения толщиной с палец. Луч прочертил прямую линию по кремниевому полу и ударил Максиму в левое плечо.
Это был не магический урон. Не физический удар.
Это было прямое аннулирование страниц памяти!
Максим закричал, падая на одно колено. В реальном мире, в третьем серверном отсеке «Кедра-4», его тело в ложе выгнулось дугой, зубы сжались с такой силой, что во рту лопнул капилляр, наполнив рот теплой медью крови. Левое плечо виртуальной проекции превратилось в облако распадающихся, хаотично мерцающих нулей.
[Критическая ошибка: Повреждение сегмента локальных данных]
[Стек вызовов поврежден: Адрес 0x7FFF0000A1F8 затерт нулями]
[Целостность потока сознания: 74%]
— Макс! Макс, очнись! — в ушах сквозь адскую боль пробился крик Алёны. — У тебя пульс сто семьдесят пять! Температура мозга растет, криошлем кипит! Я вкалываю блокатор, выходи из сети, сейчас же выходи!
— Нет! — прохрипел Максим в переговорный канал, с усилием поднимая голову. — Не смей отключать питание! Если оборвешь сессию во время активного прерывания ядра, процесс схлопнется вместе с моим сознанием! Я получу инсульт прямо в ложе! Не трогай тумблер!
Daemon-0 медленно перестраивал кольца для следующего удара. Его оптическое око вспыхнуло ярко-красным светом. На гранях ферритового тела замерцали строки машинного кода, формируя циклическую последовательность очистки стека:
```asm
XOR EAX, EAX
MOV [RDI], EAX
ADD RDI, 4
LOOP Clear_Memory_Page
```
Он собирался затереть Максима целиком. Байт за байтом. Инструкция за инструкцией. Как битый сектор на старом жестком диске.
«Думай, Патчер, думай! — хлестнул себя по щекам внутренний голос. — Забудь про магию. Забудь про игровую механику Данжа. Здесь нет заклинаний! Здесь нет уровней! Ты не маг и не воин. Ты гребаный системный инженер! Что такое этот демон? Это программа. Демон операционной системы. Автономный системный процесс с бесконечным циклом опроса событий. А что делает программист, когда программа ведет себя агрессивно?»
Программист берет отладчик.
Максим вскочил на ноги, игнорируя фантомную боль в распадающемся плече. Если высокоуровневые API заблокированы из-за отсутствия привилегий, нужно опуститься еще ниже. На уровень микрокоманд. На уровень сырых опкодов x86-64 и квантовой логики.
Он сосредоточился, визуализируя перед собой не магический круг, а прямое пространство процессорных регистров.
[Система: Попытка прямого выделения памяти в пуле ядра]
[Запрос: 64 Килобайта непрерывного адресного пространства]
[Назначение: Буфер контекста отладчика]
Система отозвалась предупреждающим мерцанием, но не заблокировала команду: в кольце 0 любой активный поток имел базовое право запрашивать стек под собственные локальные переменные.
Максим выбросил вперед уцелевшую правую руку. В воздухе перед ним возникла мерцающая полупрозрачная консоль — абсолютно плоская, изумрудно-зеленая, без декоративных рамок и текстур.
Это был его собственный, собранный из сырых инструкций инструмент.
[Инициализация пользовательского модуля: Live Disassembler v0.1a]
[Модуль: Архитектурный Декомпилятор]
[Режим: Перехват потока инструкций реального времени (Inline Hook)]
[Цель захвата: Daemon-0 (PID: 0x00000001)]
Daemon-0 нанес второй удар. Из его золотого кольца вырвался широкий веер фиолетовых лучей — циклический каскад инструкций стирания.
Но на этот раз Максим не пытался закрыться щитом.
— [Декомпилятор: Захват входного буфера!] — скомандовал он.
Зеленая консоль перед ним вспыхнула, разворачиваясь в гигантский многооконный интерфейс прямо посреди черного кремниевого пространства. Луч демона врезался в полупрозрачную плоскость отладчика.
Вместо взрыва и боли раздался сухой, пулеметный треск строчного разбора.
Смертоносный поток данных затормозил, разбиваясь на отдельные байты, и застыл в воздухе ровными столбцами ассемблерного листинга:
```asm
[0x00007FFF80001000] 48 89 E5 MOV RBP, RSP
[0x00007FFF80001003] 48 83 EC 20 SUB RSP, 0x20
[0x00007FFF80001007] 8B 45 FC MOV EAX, [RBP-0x04]
[0x00007FFF8000100A] 83 F8 00 CMP EAX, 0x00
[0x00007FFF8000100D] 75 14 JNZ 0x00007FFF80001023
[0x00007FFF8000100F] CD 2E INT 0x2E ; Системный вызов прерывания
```
— Вот ты где, гадина, — выдохнул Максим, хищно прищурившись.
Он видел анатомию врага насквозь.
Daemon-0 не обладал разумом. Он был жестко детерминированным конечным автоматом. Перед каждым ударом он считывал флаг состояния цели в регистр `EAX`, проверял его значение командой `CMP` (сравнение с нулем), и если флаг был не равен нулю — переходил к рутине аннигиляции, вызывая низкоуровневое прерывание `INT 0x2E`.
И самое главное: демон выполнял эту операцию синхронно, ожидая подтверждения от шины ввода-вывода. В его цикле обработки была аппаратная задержка в три такта процессора перед возвратом управления через инструкцию `IRET`.
Три такта. Целая вечность для архитектора.
— Алёна! — крикнул Максим в канал связи. — Мне нужен синхроимпульс на квантовом мосту! Ровно на три пикосекунды просади напряжение на трофейном «Ониксе»!
— Что?! — ее голос сорвался на визг. — Если я просажу напряжение, у нас возникнет фазовый джиттер на шине! Полетят контрольные суммы!
— Делай! Мне нужен сбой синхронизации в регистре флагов! Сейчас!
На том конце канала послышался глухой удар тяжелого рубильника.
В пространстве Ring 0 монолитные кремниевые колонны дрогнули. Золотые шины под ногами Максима на долю мгновения потускнели, сменив цвет с янтарного на мутно-багровый. Тактовая частота просела.
Daemon-0 на мгновение замедлил вращение своих колец. Его оптическое око мигнуло, пытаясь скорректировать фазу квантового генератора.
В листинге ассемблера перед глазами Максима строчка:
```asm
[0x00007FFF8000100D] 75 14 JNZ 0x00007FFF80001023
```
на долю секунды потеряла синхронизацию, ожидая завершения транзакции памяти.
Максим выбросил вперед обе руки. Пальцы двигались по виртуальной клавиатуре декомпилятора со скоростью автоматического пулемета. Он не просто писал код — он компилировал машинные инструкции прямо в открытый поток исполнения стража.
[Архитектурный Декомпилятор: Горячий патчинг памяти (Live Binary Patching)]
[Адрес модификации: 0x00007FFF8000100D]
[Замена опкода: 0x75 0x14 (JNZ) -> 0x90 0x90 (NOP NOP)]
— Никаких прыжков, приятель, — прорычал Максим сквозь стиснутые зубы. — Проглатывай пустышки!
Два байта `0x90`. Инструкция `NOP` — No Operation. Пустой такт. Команда процессору ничего не делать, просто пропустить шаг и перейти к следующей ячейке памяти.
Условный переход демона был нейтрализован. Вместо ветвления на подпрограмму уничтожения поток исполнения Daemon-0 покатился прямиком на следующую строчку:
```asm
[0x00007FFF8000100F] CD 2E INT 0x2E
```
Но Максим не остановился на этом. Он вскрыл стек вызовов стража.
Когда процессор обрабатывает прерывание, он сохраняет адрес возврата в системный стек. Если перетереть этот адрес собственным значением — можно заставить процесс выполнить любой произвольный код с правами супервизора ядра!
Классическая атака типа Buffer Overflow. Переполнение буфера на стеке, древнейший трюк программистов двадцатого века, забытый корпоративными ленивыми кодерами эпохи виртуальных симуляций!
[Внедрение шеллкода: Архитектурный эксплойт]
[Размер полезной нагрузки: 16 байт]
[Инструкции:]
```asm
XOR RCX, RCX ; Обнулить счетчик потока
MOV CR0, RCX ; Сбросить управляющий регистр процессора
IRET ; Аварийный выход из прерывания ядра
```
Максим вогнал этот шестнадцатеричный вектор прямо в раскрытый стек поверженного стража.
Фиолетовый луч аннигиляции, направленный в грудь Максима, внезапно захлебнулся.
Daemon-0 дернулся всем своим четырехметровым ферритовым телом. Вращающиеся золотые кольца со скрежетом, похожим на визг пилы по живому металлу, остановились. Внутри оптического ока демона закружились хаотичные строки критических дампов:
[Kernel Panic: Необрабатываемое исключение в Ring 0]
[Регистр CR0 скомпрометирован: Защита страниц памяти отключена]
[Стек вызовов разрушен: Недопустимый адрес возврата]
[Процесс 0x00000001 переведен в состояние Zombie]
— Очистка контекста, — тихо произнес Максим, делая шаг вперед и касаясь светящейся ладонью ферритовой грани исполина. — [Декомпилятор: Полный ассемблерный разбор].
Черный ферритовый октаэдр вздрогнул. По его идеальным граням побежали глубокие трещины, из которых ударили ослепительные снопы чистого белого света. Геометрическая фигура стража распалась на тысячи плоских кремниевых пластин, те — на миллионы мерцающих золотых транзисторных вентилей, а вентили превратились в густой, светящийся туман шестнадцатеричных данных.


