Виртуальность, хаос — это единый живой организм. Реальность, порядок — пусть и не столь единый, но тоже живой. И миры борются друг с другом, стремясь возобладать над противником… Хаос против порядка!
Мирам не нужны агенты, не нужны люди-в-черном. Миры просто используют свои внутренние ресурсы для уничтожения противника, или, хотя бы, для поддержания равновесия. Ударная сила виртуальности — worm, проникающий в структуру порядка. Ударная сила порядка?… Такие, как он! Те, кто оказался готовым к тому, что услышать голос своего компьютера, подсказывающий им, как проникнуть в виртуальность. Как загрузиться, создавая, тем самым, новые миры. Новые очаги порядка в океане хаоса.
Но как же хрупка защита этого мира, раз всего одна ошибка одного из таких взломщиков виртуальности может привести к его гибели! Значит нужно не совершить ошибки! Не позволить червю проникнуть сюда. Сбить его со следа! Проще всего сделать так, чтобы червь не проник сюда — начать загрузку, но не довести ее до конца. Остаться в виртуальности… Но тогда это не более чем изощренный метод самоубийства.
Но если удастся обеспечить себе защиту в виртуальности, то…
Слава запустил стандартный блокнот, загрузил в него готовый шаблон веб-страницы с основными наборами Javascript'ов, и задумался, всматриваясь в таблицы тегов и цифр. Если несколько минут назад идея взлома жизни казалась ему простой и привлекательной, то сейчас он достаточно смутно представлял себе, как воплотит ее в действие.
Жизнь — игра. Игры можно взломать, а затем изменить в них некоторые параметры. Одна цифра, и слабенький герой превращается в терминатора с бесконечными очками жизни. Еще одно маленькое изменение программного кода, и очки здоровья бойца возрастают в десятки раз.
С играми все просто… Во время игры каждому определенному параметру присваивается некое значение. Мощь удара героя равна пяти — значит где-то в громадном массиве цифр скрывается одно значение, равное пяти. Да, этих пятерок может быть сотни или даже тысячи, но и на этот лом есть свой прием. Допустим, геймер не знает точного значения мощи своего героя. Тогда он просто задает во взломщике поиск всех возможных значений. Затем, допустим, герой выпивает зелье силы и его мощь возрастает. Неизвестно насколько, но возрастает… Тогда геймер просто дает программе-взломщику задание отсеять все те числа, что не изменились. И рано, или поздно, после серии определенных изменений, он обязательно найдет искомое число…
Слава намеревался взломать жизнь. Взломать саму виртуальность, прошерстив ее на предмет значений, отвечающих за силу, выносливость, скорость… Да хоть сотню чисел, которые помогли бы ему стать неуязвимым для червя. Интересно, скажем, в некоторых играх можно приобрести «уловки», благодаря которым другие герои не могут видеть тебя на карте… Здорово было бы таким образом сбить со следа червя…
Но как взломать жизнь? Как обеспечить целенаправленный поиск изменившихся значений? Да и что искать?
Солнечный луч, отразившись от стекла шкафа позади Славы, упал на монитор, вспыхнув яркой надписью:
«Задействуй несколько анкеров…»
Все было просто, как и все гениальное. Как в реальности мы можем путешествовать вдоль трех измерений, так в виртуальности возможно передвигаться вдоль оси времени! Именно на этом принципе он, сам того не осознавая, создал свой загрузчик!
Создать несколько анкеров! В первом его «очки здоровья» будут полны, во втором немного уменьшатся, в третьем — еще чуть-чуть… Десяток анкеров, и он найдет то или иное значение!
Слава положил руки на клавиатуру, мысленно переводя самодельный взломщик игры с языка «Делфи», которым он обычно пользовался, на более привычный «Интернету» «JavaScript». Программа должна последовательно анализировать несколько анкеров на предмет определенных значений… Конечно, это увеличит время его пребывания в виртуальности — программа будет обрабатывать числа достаточно долго, но Слава надеялся, что тот, кто сейчас говорил с ним из мира хаоса, не останется в стороне.
Этот житель виртуальности был его единственной надеждой…
Что будем ломать? «Очки здоровья» — в обязательном порядке. «Силу»? — так ли она нужна в виртуальности? «Опыт»! Вот это — тоже обязательно. «Скорость»… Скорость передвижения в виртуальности? Пригодилась бы, вот только как бы ее ломануть?…
Пальцы сами побежали по клавиатуре, набивая те, или иные коды и теги программы. Поиск в массиве чисел всех возможных, затем цикл, повторяющийся пять — десять раз, в процессе которого отсеиваются не изменившиеся числа и создается новый массив, в котором лежат числа, среди которых и скрывается нужное. И, наконец, вывод того единственного числа, которое останется после всех преобразований, с его изменением. Не мудрствуя лукаво Слава просто-напросто задал программе увеличить найденное число в тысячу раз, и вновь вернуть во владения виртуальности.
Набросав программный код Слава в который раз задумался о том, как изменить искомые значения. Очки опыта…
Он создал новый анкер, вписал его имя в программу и взял с полки энциклопедический словарь. Можно ли измерить опыт знаниями? Он надеялся, что можно…
«Битум»… — прочел он заголовок, отметив про себя, что никогда раньше не задумывался об определении этого вещества. Быстро почел статью, посвященную битумам и создал новый анкер, как всегда являющийся лишь фотографией — отражением действительности.
«Анкер, — объяснял ему Андрей, — Он не в компьютере и не в фотографии. Он в твоей голове! Ты фиксируешь место и время, в которое хочешь вернуться, и именно это накладывает отпечаток на виртуальность. А фотография, которую мы вставляем в загрузчики — это лишь образ, помогающий тебе обратиться к регистру памяти в своем собственном мозгу!»
На этом анкере он знает чуточку больше, чем на предыдущем…
Новая статья в словаре, и новый анкер, на котором его знания увеличились еще на какую-то величину, численное олицетворение которой обязательно найдется в виртуальности. Новая статья — новый анкер… Последовательность изменений, которые должен будет найти встроенный в загрузчик взломщик виртуальности. Десять анкеров… Подумав, Слава изменил процедуру поиска «опыта» с поиска изменившихся значений на поиск увеличивающихся. Так, наверное, будет проще.
С очками здоровья оказалось сложнее… Как заставить их увеличиваться? Уменьшаться — теоретически можно, но как отследить это изменение?..
— Что ты делаешь? — спросила мать, тихо входя в его комнату.
Первым стремлением Славы было тут же свернуть программу, но он подавил это желание. Какая разница — виртуальности наверняка известно, что он задумал.
— Готовлюсь, — ответил он, — Я же сказал, что еще не сдался.
Мать укоризненно покачала головой.
— Не забывай, ты, ведь, дал слово.
— Я помню, червь, — глядя в глаза существу, завладевшему телом его матери, ответил Слава. — Я помню.
— У тебя нет выбора, — ответила мать и, не говоря больше ни слова, вышла из комнаты.
— Есть… — тихо прошептала Слава, прикасаясь к рукояти лежащего на столе ножа. — В любой момент я могу умереть!
Решение проблемы пришло тут же. Очки здоровья… Что есть их плавное уменьшение, как не медленная дорога к смерти? Не колеблясь больше ни секунды он полоснул ножом по запястью левой руки, глядя, как на ковер падают первые капли крови. Настоящей крови, а не виртуальной — как в прошлый раз, когда он сидел на этом же месте, глядя на страшную рану на своем плече. Тогда червь лишь слегка «куснул» его на выходе из виртуального мира… Наверное, именно так он собирается пробраться в этот мир — догнать и уничтожить очередного хакера и, каким-то образом воспользовавшись его телом, а, быть может, и мозгом — сойти в реальный мир с монитора компьютера.
Интересно, как будет выглядеть гибель мира? Исчезнет ли мироздание в тот самый миг, когда виртуальность откроет в него дорогу? Или это будет поступательный процесс, развивающийся, словно цепная реакция?
Мир, соприкоснувшийся с антимиром…