GNU Poke 1.0

GNU poke - это новый интерактивный редактор бинарных данных.

Не ограничиваясь редактированием таких базовых объектов, как биты и байты, Poke предоставляет полноценный процедурный интерактивный язык программирования, предназначенный для описания структур данных и работы с ними. После того, как пользователь определил структуру для бинарных данных (как правило, соответствующих определённому формату файла), он может искать, проверять, создавать, тасовать и изменять абстрактные сущности, такие как ELF-перемещения, MP3-теги, DWARF-выражения, записи в таблицах разделов и т.д., с примитивами, напоминающими простое редактирование битов и байтов. Программа поставляется с библиотекой уже написанных описаний (или "пикулей" в языке poke) для многих бинарных форматов. 

Программа GNU Poke может оказаться полезной при отладке и тестировании проектов, таких как компоновщики, ассемблеры и утилиты сжатия исполняемых файлов, для обратного инжиниринга, для разбора и документирования форматов данных и протоколов, а также для построения других утилит, манипулирующих бинарными данными, например, вариантов diff и patch для бинарных файлов. 

В отличие от редакторов дампов, позволяющих редактировать информацию на уровне битов и байтов, Poke предоставляет полноценный язык описания и разбора структур данных, дающий возможность автоматически кодировать и декодировать данные в разных форматах. 

Редактор отображает данные в виде матрицы, каждая ячейка которой соответствует одному байту, записанному в шестнадцатеричной системе счисления в виде двухзначного числа (с ведущим нулём, если он требуется). Количество столбцов матрицы является степенью двойки, чаще всего используются 16 или 8 колонок, иногда 4. Число строк зависит от количества байтов, которые требуется отобразить/отредактировать. В случае использования 16 колонок одна строка соответствует одному параграфу. 


Поскольку редактор является достаточно универсальным инструментом, описать все варианты его применения не представляется возможным. 

 

Последние материалы