Часть 1
23 декабря 2013 г. в 14:01
shw segment
assume cs:shw,ds:shw,es:shw,ss:shw
org 100h
Саундвейв был единственным, кто мог понять и оценить его. Единственным, чьи стройные мысли не перекрывал поток бессвязных эмоций. Чьи цепочки алгоритмов безупречны, код идеально оптимизирован, а расчёты выверены с точностью не ниже его собственной. Каждое столкновение было одновременно и первым, и очередным из бесконечного ряда ему подобных. Ни один из них не ценил сюрпризов, возможность заранее предсказать и рассчитать все детали одинаково пленила обоих. И для Шоквейва Саундвейв оказался единственным, кто мог предоставить эти бесценные циклы общения. Гармония их отношений почти сразу достигла совершенства, учитывалось всё, вплоть до атрибутов типа бита сохранения — степень их доверия друг другу была настолько высока, насколько это вообще возможно у десептиконов.
start: jmp swv
org 110
swv: push ds
mov ax,ds
db 05h
add_to_ds: dw 0
mov ds,ax
Только встретившись с Саундвейвом, Шоквейв впервые познал одиночество. Если раньше любой компании некомпетентных идиотов он предпочитал общение с дронами и мощными отлаженными серверами, то теперь появилась альтернатива. Жизнь без возможности выбирать протекала гораздо проще, но Шоквейв не умел жалеть о прошлом. Он скорректировал свой график так, чтобы редкие циклы их отдыха совпадали не менее раза в орн. И каждая встреча была совместным праздником для них обоих. Информационный коннект не был популярным — любители экзотических видов коннекта либо не доверяли друг другу, опасаясь хакеров-охотников за данными, либо предпочитали слияние искр как более полный способ взаимодействия. Подозревать в хакере хакера было нелогично, а соединять свою искру с чьей-либо, чтобы получить изрядную порцию его эмоций, воспоминаний и прочей совершенно бессмысленной и бесполезной информации, Шоквейв не желал. Другое дело — инфоконнект, объединяющий их вычислительные мощности в сверхкластеры, позволяющие не только эффективно решать задачи, но и наслаждаться процессом. И каждый из участников наслаждался.
pushf
push ax
push bx
push cx
jmp cs:interface
Многочисленные штекеры опутывали их корпусы облаком проводов, скоростные шины данных загружались на полную пропускную способность, пока на его инфомониторах мелькали сообщения об успешных подключениях. Едва окончательный контакт был установлен, а протоколы инициированы, коды многочисленных модулей тут же раздробились на операции, рассыпаясь по конвейерам процессорных блоков. Их мощные системы сейчас работали как единое целое, перебирая команды со скоростью, в обычное время недоступной обоим. Тем не менее, даже при таком темпе защитные системы Шоквейва успевали контролировать процесс, непрерывно ведя логи: Шоквейв не раз ловил связиста на возвратах пустых функций и тому подобных примитивных мелочах. Для Саундвейва подобное внимание к чужому стеку было выражением флирта — для хакера его уровня подобные попытки взлома казались слишком примитивными и открытыми. Впрочем, Шоквейв был уверен, что взлом чужих систем явно входит в ритуал ухаживаний, но не возражал, рассчитывая на свои мощные системы защиты: это был своеобразный обмен допусками: один демонстративно разрешал исполнение кода в стеке, другой передавал длинные строки программ, и при этом оба прекрасно понимали, что происходит.
Иногда Шоквейву действительно было интересно, к чему приведёт подобного рода игра.
free_mem: mov ah,4ah
mov bx,0ffffh
int 21h
sub bx,swv_par + f
mov ah,4ah
int 21h
jc 'face_bytes
Пока Саундвейв перебирал различные строки кода, ненавязчиво прощупывая размеры локальных буферов в поисках фиксированных по длине, Шоквейв не мог избавиться от ощущения, будто они играют в примитивную игру наподобие развлечений человеческих детей, хотя сравнение с варварской цивилизацией было не совсем корректным: он имел достаточно опыта работы с их информационными технологиями, чтобы знать, что люди действительно используют столь примитивные методы взлома. Но если человеческие попытки оперирования срывом стека вызывали только презрение, то поступок Саундвейва раздражения не вызывал — это была шутка, понятная лишь им двоим. Архитектуру процессорных блоков друг друга они уже знали не хуже собственной, чем и пользовались в циклы подобные этому.
xor di,di
mov bx,ax
dec bx
mov word ptr cs:[2],bx
mov es,bx
mov bx,0070h
mov es:[di+1],bx
Горячие фрагменты кода заполняли блоки обработки данных, регистры перезаписывались с максимальной скоростью, на какую были способны их процессоры. Защищённые режимы контроля начали отключаться один за другим, адреса возвратов стали затираться слишком длинными командами, и, возможно, сейчас у Саундвейва была хорошая возможность легко запустить свои программы, не будь его процессорные блоки перегружены точно таким же образом. Операнды смешались с кодами команд, а контроллеры не успевали отслеживать сигналы, поток данных загрузил все его основные блоки — сопроцессоры уже давно не справлялись, а сверхвысокая пропускная способность шин только посодействовала переполнению. Процент ошибок превысил возможности корректирующих кодов даже для их сверхэффективных систем, и они оба в одно и то же время отдали системам единую команду перезагрузки.
mov ax,0040
mov es,ax
mov es[0072],0000h
jmp 0FFFFh:0000h