«Цивилизация продвигается, расширяя число важных операций, которые мы можем выполнить, не думая о них», — Альфред Норт Уайтхед.
В качестве подопытного образца я выбрал классический квест. Он не давал мне покоя с того момента, как диск попал на полки магазинов. В начале нулевых я уже умел пользоваться инструментами вроде Resource Hacker и знал, что большинство игровых архивов — это обычный ZIP с фиктивным расширением.
Позже я освоил отладку в OllyDbg, снимал трассу покрытия, пробовал шпионить через API Monitor, но и это не помогло добраться до ресурсов игры. Значительно позже, освоив IDA Pro, я стал шаг за шагом расковыривать первые слои движка. Нашел виртуальную машину, разобрался с тем, как работает чтение и распаковка ресурсов, но полноценного понимания архитектуры игры у меня так и не сложилось.
История
При попытке открыть игру в Hex-редакторе я наткнулся на интересную пасхалку. Вместо кода в PE32. висело сообщение Run-time . Также начало архива с ресурсами игры в оверлее было помечено сигнатурой =VS= — инициалами разработчика.
Выпустившая «Братьев Пилотов» студия Gamos была основана в 1991 году. До 1995-го она выпускала игры для DOS, после чего переключилась на Windows. Ключевой фигурой студии был системный программист Вадим Сытников — он разработал собственный язык программирования, на котором писались все игры, по крайней мере я нашел его инициалы во всех играх для Windows.
Первая игра по «Пилотам» вышла в 1997 году, вторая часть увидела свет в конце 1998-го. К тому моменту наступил финансовый кризис, так что в начале 1999 года компания фактически закрылась, а большинство сотрудников перешло в стартап Cybiko.
Декомпиляция
Полная декомпиляция игры вручную требовала, по моим оценкам, не менее трех месяцев работы. Но я скорее спринтер, чем бегун на длинные дистанции, мне проще найти оригинальный способ взлома за два‑три дня бешеной работы, чем методично день за днем ковыряться в коде. Поэтому я стал искать альтернативные методы.
Плагин для «Иды» Gepeto позволял определять, что одна ассемблерная мешанина является конкретным алгоритмом сжатия, а другая менеджером памяти. Но все равно исследование шло очень медленно.
В поисках новых средств автоматизации я наткнулся на IDA Pro MCP. Это плагин для IDA Pro, поднимающий MCP-сервер, который позволяет языковым моделям управлять декомпилятором.
info
MCP расшифровывается как model context protocol. Это открытый стандарт, созданный Anthropic. Через него ИИ получает набор инструментов, предоставляемых плагином, таких как получение списка функций, декомпиляция в C-код, переименование переменных, создание структур, изменение типов переменных и прототипов функций.
Нам потребуется аккаунт Claude (от чата, а не от API). У меня корпоративный аккаунт с большим лимитом, думаю, что он соответствует тарифу Max. Далее устанавливаем приложение Claude в Windows. После чего следуем инструкции по установке плагина.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
