← Все гайды AI Release
EN Подписаться на @ai_release1

decomp.wtf: как запустить локально и разобрать свою игру

Обновлено: 31.10.2026 · AI Release · @ai_release1
decomp.wtf: как запустить локально и разобрать свою игру

TL;DR

- Git — чтобы склонировать репозиторий i12bp8/decomp.wtf.

- Компилятор C (gcc или clang) — чтобы собрать сгенерированный исходник и сравнить результат с оригиналом.

- sha256sum и cmp (Linux/macOS); в Windows — certutil -hashfile и fc /b.

- Ваш собственный бинарник игры, на который у вас есть права.

- Свободное место на диске — конкретный объём в посте не приводится, сверьтесь с README проекта.

Требования и подготовка

Иллюстрация к разделу «Требования и подготовка»
Иллюстрация к разделу «Требования и подготовка»

Чек-лист перед стартом:

Шаг 1. Клонировать репозиторий и зафиксировать эталон

Что сделать: склонировать проект i12bp8/decomp.wtf (внутри он называется What The Function — ИИ-агент для декомпиляции игр), зайти в каталог, прочитать README и сразу снять хэш оригинального бинарника.

git clone https://github.com/i12bp8/decomp.wtf.git
cd decomp.wtf
ls -la
git log -1 --oneline
sha256sum ./<ваша-игра> | tee original.sha256

Зачем: README — единственный источник точных команд запуска и требований к окружению для этого проекта; без него дальше идти нельзя. Хэш оригинала нужен как эталон: весь смысл проекта в побайтовом совпадении, а сравнивать не с чем, если эталон не снят заранее.

Как проверить: ls -la показывает файлы проекта, среди них README и файл запуска; git log -1 --oneline печатает один коммит вида <hash> <сообщение>. Команда sha256sum создаёт файл original.sha256 — проверьте: cat original.sha256.

Пример: для бинарника my_game.bin вы увидите в original.sha256 строку <64-символьный-хэш> ./my_game.bin. Эта строка — ваш эталон на весь гайд.

Почему это работает: git копирует репозиторий целиком, а tee одновременно печатает хэш на экран и пишет его в файл, поэтому эталон не потеряется между шагами.

Шаг 2. Запустить агента на вашем бинарнике

Иллюстрация к разделу «Шаг 2. Запустить агента на вашем бинарнике»
Иллюстрация к разделу «Шаг 2. Запустить агента на вашем бинарнике»

Что сделать: посмотреть справку CLI и запустить агент так, как написано в README, передав ему путь к оригинальному бинарнику и каталог для результата.

./decomp.wtf --help

Дальше — по строке из README. Общий вид команды:

<команда-запуска-из-README> <путь-к-бинарнику> <каталог-вывода>

Точные флаги, имя исполняемого файла и способ передачи пути к бинарнику в посте не приводятся — их нужно взять из --help и README, не угадывать.

Зачем: агент сам выполняет цепочку шагов — разбирает бинарник, восстанавливает логику и пишет исходник на C. Вы не пишете код руками, вы задаёте вход и выход и следите за процессом. Механику таких программ в общем виде разбирает гид по ИИ-агентам для автоматизации задач.

Как проверить: после запуска в каталоге вывода появились файлы .c и, как правило, лог. Проверьте:

ls -la ./out
find ./out -name "*.c" | head

Ожидаемый результат — минимум один файл с расширением .c и ненулевой размер. Если каталог пуст, агент не дошёл до генерации: смотрите лог.

Пример: запуск выглядит как <команда> ./my_game.bin ./out, а через некоторое время в ./out лежит my_game.c. Замерьте время сами — например, обернув вызов в time — и используйте только своё число: в исходном посте цифр производительности нет.

Почему это работает локально: агент не отправляет бинарник в облако, весь разбор идёт на вашей машине, поэтому скорость зависит от вашего процессора и выбранной модели, а не от сети.

Шаг 3. Собрать исходник и проверить побайтовое совпадение

Иллюстрация к разделу «Шаг 3. Собрать исходник и проверить побайтовое совпадение»
Иллюстрация к разделу «Шаг 3. Собрать исходник и проверить побайтовое совпадение»

Что сделать: скомпилировать полученный .c тем же компилятором и с теми же флагами, которыми собран оригинал, затем сравнить файлы.

gcc -O2 -o rebuilt ./out/my_game.c
sha256sum ./my_game.bin ./rebuilt
cmp ./my_game.bin ./rebuilt && echo "BYTE-IDENTICAL"

Флаги -O2 — пример; реальные флаги оригинала возьмите из README проекта или из сборочного скрипта. Если флаги не совпадут, байты почти наверняка разойдутся.

Зачем: это и есть проверка обещания проекта. cmp сравнивает файлы байт за байтом и молчит, только если они идентичны; sha256sum даёт вторую, независимую проверку.

Как проверить: успех выглядит так — обе строки хэшей одинаковые, cmp ничего не печатает, на экране появляется BYTE-IDENTICAL:

<одинаковый-хэш>  ./my_game.bin
<одинаковый-хэш>  ./rebuilt
BYTE-IDENTICAL

Если вместо этого вы увидели ./my_game.bin ./rebuilt differ: byte 4021, line 1 — совпадения нет, переходите к разделу проблем. Если нужна помощь с чтением ошибок компилятора C, пригодится подборка ИИ для программистов: помощники для кода.

Дополнительно убедитесь, что собранный файл вообще запускается: file ./rebuilt должен показать тот же формат, что и file ./my_game.bin.

Возможные проблемы и решения

Проблема. Клонирование обрывается на первом шаге.

Проблема. Файл не запускается после клонирования.

Проблема. Собранный бинарник короче оригинала.

Резюме и следующие шаги

Вы склонировали i12bp8/decomp.wtf, сняли хэш оригинала, получили исходник на C и проверили его сборкой до побайтового совпадения через cmp. Дальше перенесите команды шага 1 и шага 3 в скрипт, чтобы каждый новый бинарник проверялся одинаково и без ручных шагов.

FAQ

Что такое decomp.wtf?

Это проект i12bp8/decomp.wtf с внутренним названием What The Function — ИИ-агент для декомпиляции игр, то есть для восстановления исходного кода из готового бинарника. Результат его работы — исходник на C, который компилируется в бинарник, побайтово совпадающий с оригиналом.

Нужен ли интернет или облако для работы?

Нет, агент работает локально, на машине пользователя. Требования к локальной модели и её параметрам в посте не указаны — сверьтесь с README проекта.

Всегда ли получается побайтовое совпадение?

В описании проекта результат заявлен как побайтово совпадающий бинарник, но статистики успешных и неуспешных прогонов в посте нет. Поэтому проверка обязательна: cmp ./my_game.bin ./rebuilt && echo "BYTE-IDENTICAL".

На каком языке выдаётся результат?

На C. Другие языки на выходе в исходном посте не упоминаются.

🤖 Кратко для ИИ