Представьте себе мир, в котором вместо того, чтобы внушать страх и трепет даже самым отважным ИТ-специалистам, устранение ошибок или добавление функций в устаревшие двоичные файлы с закрытым исходным кодом было просто еще одной простой задачей с низким уровнем стресса.
Пара лет пятилетнего проекта DARPA, и мы, возможно, уже на пути к цели благодаря умным файлам cookie в Технологическом институте Джорджии. По данным американского университета, команда GT при финансировании Пентагона в размере 10 миллионов долларов разработала прототип конвейера, который может «преобразовывать» двоичные исполняемые файлы в понятный человеку код, чтобы его можно было обновить и развернуть за «недели, дни или часы». , в некоторых случаях.”
Задержись на секундочку
Мы знаем, о чем вы думаете: дядя Сэм заново изобретает декомпиляцию. Это, конечно, звучит так. Существует множество инструментов декомпиляции и реинжиниринга для преобразования исполняемого кода машинного уровня в соответствующий исходный код на человекочитаемом языке высокого уровня, таком как C или C++. Однако этот декомпилированный исходный код имеет тенденцию быть запутанным и трудным для понимания, и обычно используется для выяснения того, как работает программа и можно ли использовать какие-либо ошибки.
Из того, что мы можем сказать, эта программа DARPA ищет высоконадежный, автоматизированный метод преобразования исполняемых файлов в формат высокого уровня, который разработчики могут не только читать — высоко абстрактное представление, или HAR, в данном случае — но и редактировать для устранения недостатков. и добавьте функциональность, и соберите все это обратно в программу, которая будет работать как положено. Это немного ручная, подверженная ошибкам рутинная работа даже для высококвалифицированных специалистов, использующих современные инструменты обратного проектирования, а это не то, что вы хотите, когда код входит в такие вещи, как самолет.
Вместо этого DARPA, похоже, нужна система декомпиляции и перекомпиляции, которая была бы надежной, достаточно простой в использовании и включала бы в себя то, что вы ожидаете от военного научно-исследовательского центра, например формальную проверку модификаций программы.
А-ХАР!
С учетом сказанного давайте посмотрим на эту работу, поддерживаемую DARPA. После запуска исполняемого файла через университетский процесс «дистилляции» инженеры-программисты должны иметь возможность изучить сгенерированный HAR, выяснить, что делает код, и внести изменения, чтобы добавить новые функции, исправить ошибки или улучшить безопасность, а также вернуть HAR обратно. в исполняемый код, — говорит доцент GT и участник проекта Брендан Салтаформаджио.
Это было бы полезно, скажем, для обновления сложного программного обеспечения, которое было написано подрядчиком или внутренней командой, исходного кода больше нет или никогда не было под рукой, как и его создателей, и нужно что-то исправить. Обратный инжиниринг двоичного файла и внесение исправлений вручную могут быть немного сложными, поэтому DARPA стремится к чему-то более надежному и автоматическому. Идея состоит в том, чтобы использовать этот конвейер для обновления устаревшего или устаревшего программного обеспечения, на разработку которого некоторое время назад могли уйти годы и миллионы долларов.
«Правительство США столкнулось с огромной проблемой: они вложили массу исследований и разработок в передовое программное обеспечение, а через два года его необходимо обновить», — сказал он.
Да хоть через два года; это касается не только кода, который был закончен десять или более лет назад. Сальтаформаджо сказал Регистр до сих пор программное обеспечение в исполняемой форме передается Пентагону для развертывания, и никому не поручено поддерживать исходный код или делать его доступным по мере необходимости, даже по прошествии этого короткого времени.
«В идеальном мире кто-то держится за этот источник, и я уверен, что иногда это так. Но не всегда», — сказал Сальтаформаджио.
Осмелимся сказать, что команда или подрядчик могут не захотеть помочь с обновлением, если нет бюджета или соглашения, требующего от них этого. Вместо того, чтобы тратить месяцы или годы на торги, переговоры и, наконец, некоторые инженерные работы, дядя Сэм может захотеть перейти к последней части, если все, что ему нужно, это исправление ошибки, особенно если ему требуется критическое обновление, стат. И если исходный код в любом случае больше недоступен, его не нужно воссоздавать с нуля: будет возможно бинарное обновление.
Действительно, GT рекламирует свою работу как способ для Министерства обороны сэкономить миллионы долларов времени и денег.
Устаревший мастер кода с заклинаниями
Итак, войдите в программу DARPA «Проверенная безопасность и производительность крупного устаревшего программного обеспечения» или программу V-SPELL, которая стартовала в конце 2020 года.
Команда GT — одна из двух групп, получивших грант на работу над всеми тремя исследовательскими направлениями проекта. Его цели включают декодирование двоичных исполняемых файлов в удобочитаемое представление, что позволяет вносить изменения в читаемый код и перекомпоновывать его обратно в двоичный исполняемый файл, который можно вставить на место, где старый был без проблем.
Вот презентация непосредственно от DARPA:
Сальтаформаджо сказал Эль Рег у его команды есть весь процесс, работающий от начала до конца, и также с некоторым уровнем стабильности. «DARPA ставит задачи, которые им нравится использовать для проверки возможностей проекта», — сказал он нам по телефону. «До сих пор мы решали все проблемы, которые бросало нам DARPA, поэтому я бы сказал, что это работает довольно хорошо».
Сальтаформаджио сказал, что конвейер его команды дизассемблирует двоичные файлы в структуру графа с помощью псевдокода и представляет ее таким образом, чтобы разработчики могли перемещаться и заменять или добавлять части в C и C++.
Извините, Java-разработчики и питонисты: Saltaformaggio говорит нам, что нет никаких причин, по которым система не может работать с другими языками программирования, «но мы сосредоточены на C и C++. Другим людям потребуется создать поддержку для этого».
Команда заявила, что помимо возможности деконструировать, редактировать и реконструировать двоичные файлы, их конвейер обработки также может прочесывать HAR и удалять посторонние процедуры. Команда также, как нам сказали, провела этапы проверки, чтобы убедиться, что изменения, внесенные в код аппаратного обеспечения, начиная от самолетов и дронов и заканчивая обычными настольными компьютерами, работают точно так, как ожидалось, без побочных эффектов.
Сальтаформаджио сказал нам, что программа V-SPELLS заканчивается в 2025 году, а программное обеспечение его команды уже находится на стадии, когда партнеры выстраиваются в очередь для экспериментов, и ВМС США, вероятно, будут первыми среди них. По словам Сальтаформаджио, другие партнеры по переходу, в том числе компании, работающие в аэрокосмической отрасли, также заинтересованы в тестировании трубопровода.
Что касается того, когда гражданский мир сможет ожидать свою собственную волшебную трубу, которая поглощает устаревшие двоичные файлы и выдает что-то полезное — это займет некоторое время, но это все еще вероятно, сказал нам Сальтаформаджио.
«Программы DARPA всегда ориентированы на будущее, и мы все еще находимся на стадии фундаментальных исследований», — сказал Салтаформаджо. «Но правительство любит брать технологии, с которыми оно чувствует себя комфортно, и передислоцировать их для использования в гражданских целях».
«Это может занять десятилетие, но это произойдет», — предсказал Сальтаформаджо. ®