Инструменты, помогающие преобразовывать двоичные форматы файлов

Какие инструменты доступны для декодирования неизвестных форматов двоичных данных?

Я знаю, что Hex Workshop и редактор 010 поддерживают структуры поддержки. В известном фиксированном формате они в достаточной степени подходят, но сложны в использовании с чем-то более сложным, особенно для неизвестных форматов. Я предполагаю, что я ищу модуль для языка сценариев или скриптового инструмента GUI.

Например, я хотел бы найти структуру внутри блока данных из ограниченной известной информации, возможно, магического числа. Как только я нахожу структуру, затем следуйте известной длине и словам смещения, чтобы найти другие структуры. Затем повторите это рекурсивно и итеративно, где это имеет смысл.

В моих мечтах, возможно, даже автоматически определить возможные смещения и длины на основе того, что я уже сказал системе!

Ответ 1

Вот несколько советов, которые приходят на ум:

По моему опыту, интерактивные языки сценариев (я использую Python) могут быть большой помощью. Вы можете написать простую структуру для работы с бинарными потоками и некоторыми простыми алгоритмами. Затем вы можете писать сценарии, которые будут принимать ваш двоичный файл и проверять разные вещи. Например:

Проведите некоторый статистический анализ по различным частям. Случайные данные, например, скажут вам, что эта часть, вероятно, сжата/зашифрована. Нули могут означать прокладку между частями. Рассеянные нули могут означать целые значения или строки Unicode и т.д. Попробуйте определить различные смещения. Попробуйте преобразовать части двоичного кода в 2 или 4 байта целых чисел или в поплавки, распечатать их и посмотреть, не делают ли они. Напишите некоторые функции, которые будут искать повторяющиеся или очень похожие части в данных, таким образом вы можете легко определить заголовки.

Попробуйте найти как можно больше строк, попробуйте разные кодировки (строки c, строки pascal, utf8/16 и т.д.). Для этого есть хорошие инструменты (я думаю, что в Hex Workshop есть такой инструмент). Строки могут многое рассказать.

Удачи!

Ответ 2

Для Mac OS X есть новый отличный инструмент, который даже лучше, чем мой iBored: Synaliyze It! (http://www.synalysis.net/)

По сравнению с iBored, он лучше подходит для незаблокированных файлов, а также дает полный контроль над структурами, включая скриптабельность ( с Lua). И он также лучше визуализирует структуры.

Ответ 3

Tupni; насколько мне известно, напрямую из Microsoft Research, но есть статья об этом инструменте, которая может представлять интерес для тех, кто хочет написать подобную программу (возможно, с открытым исходным кодом):

Tupni: автоматическая обратная инженерия входных форматов (@цифровая библиотека ACM)

Абстрактный

Недавняя работа установила важность автоматического обратного разработка спецификаций протокола или формата файла. Однако форматы назад, спроектированные предыдущими инструментами, пропустили важный информации, которая имеет решающее значение для приложений безопасности. В этом бумагу, мы представляем Tupni, инструмент, который может перепроектировать входной сигнал формат с богатым набором информации, включая последовательности записей, типы записей и ограничения ввода. Тупни может обобщать формат спецификация на нескольких входах. Мы внедрили прототип Тупни и оценил его в 10 разных форматах: пять форматы файлов (WMF, BMP, JPG, PNG и TIF) и пять сетей протоколы (DNS, RPC, TFTP, HTTP и FTP). Тупни определил все записывать последовательности в тестовые входы. Мы также показываем, что путем агрегирования над несколькими файлами WMF, Tupni может получить более полную формат для WMF. Кроме того, мы демонстрируем полезность Тупни, используя богатую информацию, которую он предоставляет для zeroday генерации подписи уязвимостей, что было невозможно с предыдущие обратные инженерные инструменты.

Ответ 4

Мой собственный инструмент "iBored", который я выпустил совсем недавно, может сделать часть этого. Я написал инструмент для визуализации и отладки форматов файловой системы (UDF, HFS, ISO9660, FAT и т.д.) И реализовал поиск, копирование, а затем даже поддержку структуры и шаблонов. Поддержка структуры довольно прямолинейна, а шаблоны - способ динамического определения структур.

Все это программируется на диалекте Visual BASIC, позволяя вам проверять значения, читать определенные блоки и все.

Инструмент бесплатный, работает на всех платформах (Win, Mac, Linux), но как личный инструмент, который я только что выпустил для публикации, он мало документирован.

Однако, если вы хотите попробовать, и хотите дать отзыв, я могу добавить более полезные функции.

Я бы даже открыл исходный код, но, как написано в REALbasic, я сомневаюсь, что многие люди присоединятся к такому проекту.

Ссылка: Домашняя страница iBored

Ответ 5

Я все же иногда пользуюсь старым шестнадцатеричным редактором под названием A.X.E., Advanced Hex Editor. Похоже, что он в значительной степени исчез из Интернета, хотя Google все равно сможет найти его для вас. Последняя версия, о которой я знаю, была версия 3.4, но я действительно использовал только бесплатную версию 2.1.

Его самая интересная особенность, и тот, который я использовал больше всего для расшифровки различных игровых и графических форматов, - это графический режим просмотра. Это в основном просто показывает вам файл с каждым байтом, который превращается в цветной пиксель. И так же просто, как это звучит, это сделало мои попытки обратного проектирования намного проще.

Я полагаю, что делать это одним глазом - это совершенно противоположно автоматическому анализу, и графический режим не будет очень полезен для поиска и последующего смещения...

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

Ответ 6

Существует Hachoir, который является библиотекой Python для анализа любого двоичного формата в полях, а затем просматривает поля. В нем много парсеров для общих форматов, но вы также можете писать собственные парсеры для своих файлов (например, при работе с кодом, который читает или записывает двоичные файлы, я обычно пишу анализатор Hachoir сначала, чтобы получить отладочную помощь). Похоже, проект в настоящее время неактивен.

Ответ 7

Мой проект icebuddha.com поддерживает это с помощью python для описания формата в браузере.

Ответ 8

Сокращение моего ответа на аналогичный вопрос:

Один инструмент WinOLS, который предназначен для интерпретации и редактирования двоичных изображений компьютера с управлением двигателем автомобиля (в основном числовые данные в их таблицах поиска). Он поддерживает различные форматы endian (хотя и не PDP, я думаю), и просмотр данных различной ширины и смещения, определение областей массива (карт) и визуализации их в 2D или 3D со всеми видами масштабирования и смещения. Он также имеет эвристический/статистический автоматический поиск карт, который может сработать для вас.

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