Читаем Red Cell полностью

— Если не сумеем найти дорогу в чужом городе без карты, значит мы работаем не на ту контору, — сказала она.

К ее удивлению, Джонатан наконец улыбнулся.


Информационный оперативный центр ЦРУ

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

Дизассемблирование скомпилированной компьютерной программы считалось самой трудной задачей для программиста. По сравнению с ним написание программ, даже весьма сложных, казалось детской игрой. Программист мог использовать любой из десятков языков, которые облегчали жизнь кодировщикам, позволяя им использовать английские слова (которые назывались «исходным кодом») вместо того, чтобы вынуждать их пользоваться одними лишь числами, которые на самом деле только и понимали компьютеры. Английские команды преобразовывались в эти числа с помощью компилятора, игравшего роль одностороннего переводчика.

Искусство дизассемблирования заключалось в том, чтобы превратить числа снова в английские команды, не имея в качестве руководства исходного кода, — это было похоже на попытки перевести египетские иероглифы, не имея в своем распоряжении Розеттского камня. Люди использовали для счета десятеричную систему, где числа шли в порядке 0-1-2-3-4-5-6-7-8-9, прежде чем добавлялась вторая цифра и получалось 10. Компьютеры считали в восьмибитной двоичной системе, с последовательностью чисел 00000000-00000001-00000010-00000011, и так до бесконечности. Но в потоках нулей и единиц было легко ошибиться, к тому же занятие это было настолько утомительным, что не могли помочь ни кока-кола, ни кофе. Поэтому Уивер использовал декомпилятор, переводивший двоичные числа в шестнадцатеричные — с основанием шестнадцать. По крайней мере, он хотя бы мог думать в шестнадцатеричной системе, где числа шли в порядке 0-1-2-3-4-5-6-7-8-9-a-b-c-d-e-f. Но дальше ему приходилось смотреть на числа и пытаться перевести их обратно в исходный код, выполнявший те же самые функции.

В частном секторе хорошо платили тем немногим, кто мог дизассемблировать программы. Их опыт был полезен любой компании, стремившейся похитить коммерческие секреты конкурента, а Уиверу вполне хватало одержимости для подобного ремесла. Он мог бы зарабатывать вдвое больше, чем ему платили на госслужбе. «Майкрософт» и «Гугл» делали ему щедрые предложения, но патриотическая жилка удерживала его на правительственной службе. Уивер полагал, что смог бы сколотить неплохое состояние, занимаясь промышленным шпионажем, но он мог заниматься тем же самым здесь, не имея проблем с законом. Если бы Уивер не накачивался кофе, который среди программистов считался эликсиром жизни, он давно бы уже спал сном праведника.

В программе, которую принесли ему из «Красной ячейки», не было ничего замысловатого. Писавшие ее китайские кодировщики обладали опытом, но не вдохновением. Искусству программирования свойственно естественное изящество, но лучшие алгоритмы превращались из простых строчек кода в нечто прекрасное, где каждый модуль работал в идеальной гармонии с другим. В строках кода, которые всю ночь реконструировал Уивер, не было ничего даже близкого к этому, что стало для него как благословением, так и проклятием. Они почти предсказуемо превращались в ассемблерный код, но процесс стал весьма нудным, что нисколько не помогало Уиверу, учитывая, что было уже далеко за полночь.

Алгоритм, который Уивер извлек из китайской программы автоматизированного проектирования, оказался более длинным, чем он ожидал, и более сложным, чем могло бы следовать из его размера. В МТИ от Уивера требовалось пройти вводный курс дифференциальных уравнений, и он получил лишь среднюю оценку, так что ему понадобился почти час, чтобы понять, что алгоритм имеет к ним непосредственное отношение. Уивер позаимствовал учебники у коллеги (свои он продал в колледже несколько часов спустя после последнего экзамена), но они ничем ему не помогли. Он подумал, что, поскольку алгоритм интегрирован в программу САПР, книги по общей математической теории мало чем помогут. Куда больше подошли бы пособия по геометрии, машиностроению или, может быть, физике.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже