Инструменты, помогающие реконструировать двоичные форматы файлов - PullRequest
77 голосов
/ 29 января 2009

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

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

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

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

Ответы [ 8 ]

20 голосов
/ 19 февраля 2009

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

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

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

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

Удачи!

15 голосов
/ 08 декабря 2011

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

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

10 голосов
/ 23 октября 2009

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

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

Аннотация

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

7 голосов
/ 29 января 2009

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

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

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

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

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

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

6 голосов
/ 25 февраля 2009

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

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

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

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

3 голосов
/ 23 мая 2013

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

1 голос
/ 27 января 2013

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

0 голосов
/ 07 декабря 2011

Паста моего ответа на похожий вопрос:

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

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

...