Другие миры

Андрей Лысак
(в соавторстве с @lexfox)


Я сижу в удобном, мягком, кресле перед небольшим круглым столом в центре комнаты. Взгляд, скрытый за шлемом виртуальной реальности, погружен в трехмерную матрицу кода монитора-отладчика. Пальцы летают над клавиатурой одного из Спектрумов, вбивая нужные мне команды…

К сестренке только что начали пускать посетителей. Я сидел у больничной кровати и держал ее за руку. Маленькое истощенное тельце едва ли не просвечивало сквозь белые простыни. Тоненькие пальчики безвольно лежали в моей ладони. Девочка отвернулась, не хотела, чтобы я видел, появившиеся у нее на лице морщинки. Некогда жизнерадостные синие глаза апатично смотрели в окно.
- Врачи сказали, что я больше не смогу двигаться. - прошептала она. – Только два пальчика на правой руке.
- Я… - как трудно порой бывает подобрать хоть какие-то слова. Я сидел и смотрел на свою тринадцатилетнюю сестру, в голове крутился безудержный калейдоскоп слов, фраз, эмоций. Глядя на нее, вспоминая, ее живую улыбку, я едва смог что-то сказать. – Я знаю.
В палате снова повисла тишина. Гнетущее отсутствие каких либо звуков. Казалось, что я начинаю задыхаться от тишины. Хотелось кричать, говорить, хоть как-то разрушить смыкающиеся невидимые стены, но подступающий к горлу комок кандалами приковывал к безмолвию.
- Иди… я хочу немножко отдохнуть…
Я поцеловал ее, в обритый для операции череп и тихонько вышел, последний раз глянув на лежащую в коконе стерильных простыней увядающую сестру. Когда я закрывал дверь, то услышал, как она тихонько плачет. Я бессильно опустился на пол и посмотрел на горящую люминесцентную лампу.
Я вспоминал, как она, не выспавшаяся, с взъерошенными черными волосами, дремала над тарелкой с завтраком, перед тем как идти в школу. Как мне приходилось разбираться с особо наглой шпаной, которые вздумали ее доставать. На губах невольно появилась горькая улыбка. Почему-то я не мог связать сестренку из воспоминаний, с той, что сейчас лежала на больничной кровати за стеной. Как будто это было два совсем разных человека. В груди что-то неприятно сжалось.
- Я подарю тебе другой мир, малышка, твой мир.

… Напротив меня, за стеной из компьютеров и магнитофонов, с противоположной стороны стола, ютился, сгорбившись у своего карманного Спектрума, подключенного в единую сеть с остальными компьютерами, Оптимус Прайм. Он играл свою симфонию взлома, вел меня сквозь виртуальный лабиринт системы, словно нить Ариадны ведущая через Лабиринт Минотавра. Но, даже работая в паре, мы едва преодолевали стены программных защит…

Дождь не утихал, впрочем, это не было помехой для кипящей жизни рынка. Софт, Хард, вся дикая смесь от первых изданий Плейбоя, довоенных микросхем и сомнительных пирожков, до последних разработок в области программирования и самого свежего железа, все было собрано на небольшом участке земли расположенном на окраине города. Через узенькие проемы между контейнерами, мешая ногами старые, разбухшие от влаги куски картонных коробок, какую-то органику и мелкие камушки, я пробирался к одной из нескольких лестниц, ведущих к одиноким магазинчикам ютящимся на крышах. Я шел к Рипу, в надежде заполучить желанную программу. Поднявшись по лестнице, я ненадолго остановился и окинул взглядом связанный толстыми жгутами проводов, и утыканный антеннами, словно ёж иглами, рынок.
Я нырнул в магазинчик Рипа, от небольшого движения воздуха перед дверьми приветливо зазвенели деревянные колокольчики. В нос ударил сладковатый запах каких-то восточных благовоний.
- Хто тут у нас? Неушто сам автобот Джас пошаловал? – С явным акцентом промолвил здоровенный индус, протягивая мне расписанную татуировками руку.
- Здравствуй, Рип! Слышал, у тебя есть новая игруха Voyages Extraordinaires. Сколько за нее? - Я пожал мужчине руку, и снял промокший капюшон.
- О-о-о! На товар нашелся покупатель. Пятьсот. Эксклюсив как ни как, свежий релис, все по-честному.
Я достал деньги, и молча, отсчитал нужную сумму. Рип, незамедлительно взял деньги и спрятал их в одном из внутренних карманов своей жилетки с узором из золотистых Будд. После чего, начал долго рыться в деревянных ящиках за прилавком.
- Есть для тебя работка, Джаси. Надо всломать пару-тройку программ из нового поступления.  Всё как обычно: вписать нашу виситку и так далее. Деньги обещаю не большие, но… О! Вот она. – Рип протянул мне небольшую оклеенную голографическими наклейками картонную коробку с четырьмя кассетами. – VR-версия. Учти, для работы потребуется два-три Spectrum-XD в сети.
- Спасибо, Рип.
- Всегда пошалуйста, Джаси. – Индус неторопливо вернулся к раскуриванию кальяна и просмотру любимых телепередач.
Когда я уже закрывал дверь, Рип, продолжая смотреть маленький черно-белый телевизор без звука, окликнул меня:
- Сабыл спросить, как сестра?
- Плохо. – Я вышел, не дожидаясь следующего вопроса.
Дойдя до ближайшего телефонного автомата, и воспользовавшись плеером, я снова позвонил Прайму.
- Алло.
- Оптимус, мне будет нужна твоя помощь...

...Перед глазами мелькал безумный калейдоскоп кода программы-загрузчика. Пальцы стучали по скрытой от моего взора клавиатуре, вводя нужные адреса и команды. Казалось, что хаотически распространяющееся тело программы защиты загрузчика, стремится занять всю оперативную память, постоянно копируя  блоки кода, местами представляющие собой программный мусор, местами – избыточный, крайне неудобочитаемый исполняемый код, не оставляя в итоге монитору-отладчику и байта свободного места. В процессе Прайм успел насчитать с десяток топовых польских защит от коллег из Gilbert’s Team[1], и несколько еще неизвестных нам, над которыми предстояло изрядно попотеть. Классический ряд приемов, начиная от использования недокументированных команд процессора и шифрования с использованием бинарных операций, заканчивая изощренным манипулированием обработчиками маскируемых прерываний, стеком и регистром регенерации уже мог отвадить кого угодно, превратив процесс взлома в кошмарный сон. Кого угодно, кроме тех, чьи потаенные страхи уже начинали сбываться… Монитор-отладчик динамически перемещался в памяти, подстраиваясь под структуру загрузчика, пока тот не стал поглощать экранную область памяти.
На мгновение наступила тишина.  Изображение на экране исказилось и замерло...

Я вышел из больницы и накинул на голову капюшон. На улице лил дождь, прохожие торопливо бежали по делам, прикрываясь зонтами и уже размокшими газетами. Вода миллионами смертников падала с небес на серый асфальт. Я перебежал дорогу, едва не угодив под желтое БМВ, и добрался до телефонной будки. Приставив к аппарату плеер, я снял трубку и проиграл мелодию тонального набора номера. В трубке послышались гудки.
- Алло.
- Оптимус?
- О! Джаз, здорово! Ты видел последнюю серию? Только что крутили! Такое мочилово между Праймом и Мегатроном – просто супер!
- Прайм, я по делу. Помнишь, ты рассказывал о новой VR-игре с просто нереальной атмосферой и графикой.
- Voyages Extraordinaires?
- Да. Короче, мне нужно ее достать.
- Что таки решил попробовать? – в трубке послышался смех. – Я видел ее у Рипа на рынке. Спроси у него, если еще не продал.
- Спасибо.
- Как там сестра?
- Плохо.
Я повесил трубку. Еще с минуту постояв у телефонного автомата, слушая стук разбивающихся о крышу капель, я развернулся и направился к ближайшей станции метро. Нужно было заскочить домой, взять деньги.

... - Мы только теряем время, – сказал Прайм. Выдержав секундную паузу, чтобы перевести дыхание, он стал подключать к Спектруму программно-аппаратный эмулятор процессора EZX-S3 [2].
Я кивнул и, дождавшись когда Прайм закончит подключение, запустил на эмуляторе монитор-отладчик MONS.X.
– Ну что, поехали?.. Дубль два!
В комнате заиграли свою программную мелодию магнитофоны...

Прайм был всего на год старше меня, он учился в том же институте, и на том же факультете, что и я, собственно я с ним и познакомился на одном из перерывов между парами. Помешанный на трансформерах подросток, сидящий за последней партой и вечно что-то набирающий на своем карманном компьютере, показался мне сначала немного странноватым. А теперь я наблюдал, как он достает из рюкзака компьютеры и, внимательно осмотрев на наличие каких-либо появившихся во время переноски механических повреждений, бережно кладет их на круглый стол. Достав из глубин своего рюкзака последний, заключенный в серый прямоугольный корпус, с расположившимися на нем, уже наполовину стертыми, кнопками, компьютер, Оптимус довольно потянулся.
- Так, зачем тебе ломать эту игруху, Джаз? – Все еще занятый своими компьютерами, Прайм достал из внутреннего кармана лежащей на диване куртки, весь в наклейках карманный Спектрум, который он когда-то купил со стипендии.
- Хочу создать свой виртуальный мир. Для чего мне понадобится ее движок и структура хранения данных виртуального мира.
Худощавый подросток в броской футболке одного из первых альбомов IronMaiden недоверчиво посмотрел на меня.
- Ты это для сестры делать собрался?
- Да. – Почему-то неуверенно сказал я.
- Окей. – Прайм потрепал рукой, и так растрепанные во все стороны, волосы, и принялся соединять компьютеры цветными кабелями.
Я взял свой шлем виртуальной реальности и покрутил его в руках.
- Мне кажется, так я смогу вернуть ей то, что она потеряла.
- А мне кажется, что ты пытаешься вернуть себе то, что ты потерял... - Парень кивнул на магнитофоны. – Давай вставляй кассеты, не будем терять время.

...Я смахнул со лба выступивший пот, продолжая набирать команды, пытаясь отфильтровывать ненужные блоки кода. Голова начала болеть, глаза пересыхали, и я не мог уже концентрировать внимание более чем на трех объектах одновременно. Но, пошаговая трассировка в MONS.X давала свои результаты, и клубок начинал постепенно распутываться. Где-то там, в реальном мире, за плечо меня держал девятнадцатилетний Оптимус Прайм, наблюдая через экран своего карманного компьютера, как я, будучи погруженным в поток данных, пытаюсь понять ход мыслей разработчика и упорядочить этот кодовый хаос.  Постепенно стало вырисовываться ядро загрузчика. Я всматривался в потоки команд, выделяя блоки отвечающие за чтение ускоренного формата записи, декодирование загружаемого кода «на лету», адресную систему поблочной загрузки кода в память, систему модификации загрузчика и защит. Оставалось только найти точку входа в игру.
Стена уготованных нам защит пала в течение двух с половиной часов. Четверть пути была пройдена...

Три дня беспрерывного программирования остались позади. На движке взломанной с Праймом игры, мной был смоделирован новый виртуальный мир, впереди оставалось совсем немного работы... да какая к черту работа, когда твоя тринадцатилетняя прикованная к постели сестра уже несколько дней не видит ничего кроме белых стен и угрюмого больничного парка за окном.
Холодная вода неприятно коснулась потного, распаленного лица. В ванной пронзительно шумела вода. Мощный поток разбивался о раковину и разлетался множеством маленьких капелек. Я снова набрал в ладони воды, чувствуя, как окоченевают пальцы, и брызнул себе в лицо. Мир медленно прояснялся. Рука потянулась и повернула кран горячей воды. Я подставил под струю голову, чувствуя, как прохладная жидкость стекает по затылку к шее, и дальше бежит за шиворот, как намокают волосы. Подержав под потоком воды голову, я поднялся и посмотрел на себя в зеркало. Красные, воспаленные глаза все еще было больно закрывать. Я закапал себе искусственную слезу и только потом начал вытирать голову и переодеваться из потной, липкой, и мокрой одежды во что-то сухое.
На столе мирно покоились несколько соединенных толстыми разноцветными кабелями Spectrum XD-8 VR [3]. Четыре магнитофона усердно писали информацию на кассеты. Рядом лежал мой старый шлем с улучшенным внешним хэдтреккингом. Когда магнитофоны разом остановились, издавая протяжное низкочастотное гудение, я облегченно выдохнул, и достал кассеты.
Я нашел старую, огромную спортивную сумку Адидас, и аккуратно сложил в нее Спектрумы и четыре купленных на рынке и вручную перепаянных плеера Sony WM-D6C. За ними отправились и два шлема. Кассеты были запрятаны во внутренние карманы куртки.
Выходя из квартиры, я забыл выключить свет, но сейчас мне было все равно. Я прокрутил ключ в замке и дернул для проверки ручку.
- Другие миры… - губы сами медленно сложились в улыбку.

... Установив в мониторе-отладчике брэйкпоинт и, погрузившись в мерцающий свет экранов, мы терпеливо ждали окончания загрузки, любуясь, время от времени меняющимися заставками. Комнату наполняла своеобразная полифония звуков, доносящихся из потрепанных динамиков магнитофонов. Профессионализм разработчика ощущался во всем, как в проработке мельчайших деталей на моделях с невиданным до сих пор количеством полигонов, так и в обещанном витиеватом сюжете, в адаптации которого, по заявлениям разработчиков, принимало участие несколько самых популярных фантастов нашего времени. Впереди нам предстояло заглянуть в самое нутро этого  шедевра.
За последние два года господствующим в игровой индустрии альянсом MUO [4] был кардинально изменен подход в написании продуктов и их защите. Тесное сплетение исполняемого кода игры, блоков данных и защит, производящих в процессе игры дешифрование и шифрование областей памяти, на порядки усложняли процедуру взлома, даже с использованием специальных устройств.
Дождавшись, когда по окончанию загрузки монитор-отладчик перехватит управление, я подключил необходимые базы знаний интегрированной в MONS.X экспертной системы и запустил семантический анализатор кода. Оставалось разложить все по полочкам: найти и определить назначение основных процедур и блоков данных.
Спина начинала ныть от напряжения. Перед глазами проносились тысячи строк кода, в сумасшедшем ритме мелькали сообщения монитора-отладчика. Прайм фиксировал декодированные анализатором процедуры и блоки данных. Мозаика медленно складывалась в единую, цельную, нужную нам картину. Стали просматриваться области исполняемого кода, упорядоченные семантическим анализатором, и области данных с картами виртуального мира и его объектами.
Прошло чуть более шести часов.
– Мы сделали это, Джаз! Мы сделали это! – Восторженно воскликнул Прайм.
– Держи пять! 
Но вскоре одолевавшая нас буря эмоций пошла на спад, лежащая на больничной койке сестра не шла у меня из головы. Я тяжело перевел дыхание.
- Извини, Прайм.
Последнее что я увидел, одевая шлем и приступая к моделированию виртуального мира, была понимающая улыбка лидера Автоботов…

Сестренка внимательно наблюдала, как я любовно извлекаю из сумки компьютеры и соединяю их вместе. Как достаю и подключаю плееры.
- А зачем это?
- Сейчас увидишь, малышка.
Я вставил кассеты и нажал на воспроизведение. Палату огласила симфония треска и гудков, но через некоторое время все прекратилось и на небольшом встроенном экране одного из Спектрумов загорелось меню. Я поднялся и аккуратно надел на голову сестры шлем.
- Помнишь, что я говорил? Указательным пальчиком идти вперед, а средним пальчиком – любое действие.
- Да.
Я нажал на кнопку запуска игры.
За окном медленно садилось солнце, скрываясь за горизонтом домов. Последние, оранжевые лучи скользили по парку, по зданиям, заглядывали в больничные палаты.
Я сидел и смотрел на улыбающуюся младшую сестру. Из-под шлема, по ее щеке покатилась слезинка.
Я надел второй шлем…


__________

1 – Группа основанная польским хакером Bill Gilbert’ом
2 – Emulator of ZX inclusive Semantic analyzer. Revision 3
3 – Spectrum eXternal Device support - 8 Virtual Reality
4 – От названий фирм участников Mikro-gen Ltd, Ultimate Play The Game, Ocean Software Ltd.