Как я использовал Ruby для реверс-инжиниринга архивов Codemasters с помощью AI

Reverse-engineering Codemasters' BIGF archive format in Ruby

Как я использовал Ruby для реверс-инжиниринга архивов Codemasters с помощью AI

Я создал чистый парсер для бинарного формата BIGF от Codemasters, используя только стандартную библиотеку Ruby и помощь AI. Вопреки стереотипам, Ruby отлично справляется с работой с байтами благодаря строкам как буферам и методу unpack. Этот проект доказывает, что Ruby может быть эффективным инструментом для реверс-инжиниринга старых игр без лишних зависимостей.

Язык, который люди используют для написания 'has_many :comments', оказывается идеальным блокнотом для дизассемблера.
  1. tn1

    Un/pack в Ruby, конечно, сильно вдохновлен аналогом в Perl: https://perldoc.perl.org/functions/pack

    Однако с точки зрения синтаксиса разрезание строк здесь немного проще, чем в Perl.

  2. davidslv

    Автор здесь. Всё началось как хобби-попытка понять старый игровой ИИ от Codemasters, который в своё время получил множество интересных обзоров. Это означало, что сначала нужно было изучить их формат архивов "BIGF". Сюрпризом стал Ruby: String#unpack — это по сути быстрый бинарный парсер, написанный на C и спрятанный в стандартной библиотеке, а весь читатель не требует никаких зависимостей. Репозиторий (MIT): https://github.com/davidslv/bigf

    Честное признание: ИИ помогал на всём протяжении — я направлял процесс и проверял каждое утверждение по байтам. Никаких игровых данных в коммиты не добавлено; тесты синтезируют фикстуры на основе документированного формата.

  3. Alifatisk

    Какая увлекательная статья. Это просто отличный пример возможностей языка и его стандартной библиотеки. Существует gem под названием "Ronin", который, как предполагается, покрывает подобные случаи. Но в вашем случае, похоже, он и не понадобился.

Ещё за этот день

2026-07-07