Как я использовал Ruby для реверс-инжиниринга архивов Codemasters с помощью AI
Reverse-engineering Codemasters' BIGF archive format in Ruby

Я создал чистый парсер для бинарного формата BIGF от Codemasters, используя только стандартную библиотеку Ruby и помощь AI. Вопреки стереотипам, Ruby отлично справляется с работой с байтами благодаря строкам как буферам и методу unpack. Этот проект доказывает, что Ruby может быть эффективным инструментом для реверс-инжиниринга старых игр без лишних зависимостей.
Язык, который люди используют для написания 'has_many :comments', оказывается идеальным блокнотом для дизассемблера.
- tn1
Un/pack в Ruby, конечно, сильно вдохновлен аналогом в Perl: https://perldoc.perl.org/functions/pack
Однако с точки зрения синтаксиса разрезание строк здесь немного проще, чем в Perl.
- davidslv
Автор здесь. Всё началось как хобби-попытка понять старый игровой ИИ от Codemasters, который в своё время получил множество интересных обзоров. Это означало, что сначала нужно было изучить их формат архивов "BIGF". Сюрпризом стал Ruby: String#unpack — это по сути быстрый бинарный парсер, написанный на C и спрятанный в стандартной библиотеке, а весь читатель не требует никаких зависимостей. Репозиторий (MIT): https://github.com/davidslv/bigf
Честное признание: ИИ помогал на всём протяжении — я направлял процесс и проверял каждое утверждение по байтам. Никаких игровых данных в коммиты не добавлено; тесты синтезируют фикстуры на основе документированного формата.
- Alifatisk
Какая увлекательная статья. Это просто отличный пример возможностей языка и его стандартной библиотеки. Существует gem под названием "Ronin", который, как предполагается, покрывает подобные случаи. Но в вашем случае, похоже, он и не понадобился.