Заставить ИИ написать код, который выглядит правильным, легко. Заставить его написать код, который доказуемо совпадает с кодом шутера 2009 года, — совсем другая задача, и на неё ушло от 600 до 700 миллиардов токенов. Разработчик Морис Хойманн рассказал, как использовал ИИ-агентов для восстановления исходного кода Call of Duty: Modern Warfare 2 (релиза 2009 года), и самое интересное здесь — не написание кода. А его проверка.
Что было сделано
Проект занял примерно три месяца. Для анализа оригинального кода Хойманн использовал две коммерческие модели: Claude от Anthropic и Codex от OpenAI.
По мере роста объёма работы росла и команда. В начале было четыре ИИ-агента. К концу сентября их стало 17. По его оценке, общие затраты составили от 600 до 700 миллиардов токенов — на фоне этой цифры ежемесячный счёт за API выглядит как карманные деньги.
Настоящей проблемой было доверие
Написание кода оказалось дешёвой частью работы. Сложно было доказать, что код соответствует оригиналу.
Поначалу модели выдавали реализации, которые было приятно читать. Но они допускали ошибки именно там, где это критично при попытке воссоздать конкретный бинарный файл. Агенты ошибались в типах данных, сигнатурах функций и структуре программы. Иногда они просто меняли логику по собственной инициативе — очаровательная привычка у коллеги, но недопустимая для инструмента восстановления кода.
Решение: арбитр, которого невозможно очаровать
Хойманн решил перестать полагаться на то, насколько правдоподобно выглядит результат. Команда автоматизировала сравнение каждой восстановленной функции с оригинальным исполняемым файлом, вплоть до каждого байта.
Они также перешли на тот же компилятор, которым пользовались при первоначальной сборке игры. Это важно, потому что одинаковый исходный код, собранный другим набором инструментов, не даст идентичных байтов. Поэтому расхождение может означать как ошибку, так и всего лишь использование другого компилятора.
Благодаря этим двум изменениям каждая функция получала бинарный вердикт: совпадает или не совпадает. Никаких баллов за частичный успех, никаких «по-моему, выглядит разумно».
| Параметр | Подробности |
|---|---|
| Длительность проекта | Около трёх месяцев |
| Использованные модели | Claude (Anthropic), Codex (OpenAI) |
| Агенты | 4 в начале, 17 к концу сентября |
| Расход токенов | От 600 до 700 миллиардов (оценка разработчика) |
| Проверка | Автоматизированное побайтовое сравнение с оригинальным исполняемым файлом с использованием того же компилятора, что и при сборке оригинала |
Результаты
Хойманн сообщает, что удалось восстановить 99% функций игры. Из них 83% совпадают с оригиналом байт в байт.
С остальными всё не так гладко. По его оценке, значительная часть функций, которые не совпадают в точности, всё же ведёт себя правильно по смыслу. Иными словами, они семантически корректны, даже если результат компиляции отличается. Игра запускается и работает.
Стоит помнить о двух оговорках. Эти проценты приводит сам разработчик, а в сообщении не объясняется, как была получена оценка семантической корректности несовпадающих функций. Побайтовое совпадение функции — объективный факт. «Вероятно, работает» — мнение, пусть и хорошо обоснованное.
Та часть, где появляются юристы
Хойманн также прямо высказался о юридической стороне: декомпилированный код, разумеется, защищён авторским правом. По его словам, Activision оказывала давление из-за проекта, ссылаясь на авторские права.
Последствия были вполне конкретными. Две предыдущие публикации в его блоге были удалены, а видео в публикации на X стало недоступно после жалобы правообладателя.
Какие выводы можно сделать
- Проверка важнее генерации. Агенты могли выдавать читаемый код хоть целыми днями. Проект заработал благодаря автоматизированной проверке, которая отвечала только «да» или «нет».
- Используйте тот же инструментарий сборки. Использование оригинального компилятора превратило приблизительное сравнение в строгое.
- Работа шла параллельно и в большом масштабе. Семнадцать агентов и несколько сотен миллиардов токенов — это не эксперимент на выходные, каким бы непринуждённым ни был тон публикации в блоге.
- Юридическая сторона не поспевала за развитием инструментов. На техническое достижение ушло три месяца. С удалением публикаций особых сложностей не возникло.
Простой вывод здесь в том, что написание кода с ИИ становится надёжным, когда вы создаёте механизм, способный сказать «нет». Менее простой — в том, что настолько эффективный метод восстановления старого коммерческого ПО привлекает именно такое внимание, с которым столкнулся этот проект.