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

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

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

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

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


person Mat    schedule 29.01.2009    source источник
comment
Не прямой ответ на ваш вопрос: у вас нет исполняемых файлов, которые работают с этими двоичными файлами в неизвестных форматах? Использование отладчика ring3, такого как OllyDbg, для реинжиниринга, которое было бы намного проще, чем пытаться перебором форматов файлов.   -  person Daniel Sloof    schedule 29.01.2009
comment
О да, одно из приложений, которое я должен был добавить к той программе, которую вы когда-либо хотели написать, но никогда не находили времени, чтобы сделать это вопрос;)   -  person devio    schedule 29.01.2009
comment
В некоторых случаях у меня есть исполняемые файлы, которые в какой-то мере их обрабатывают. Иногда файлы представляют собой исполняемый код (но не в стандартном формате) и вполне могут содержать собственные процедуры декодирования. У нас могут быть ограниченные фрагменты частичной документации в качестве отправной точки. В остальных случаях у меня ничего нет.   -  person Mat    schedule 29.01.2009


Ответы (8)


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

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

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

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

Удачи!

person Untrots    schedule 18.02.2009
comment
Hachoir из приведенного ниже ответа является именно такой структурой. Он поставляется с предопределенным набором полей: различные типы строк, дат, битов, чисел с плавающей запятой, заполнения и т. Д. Встроенные синтаксические анализаторы могут использоваться в качестве примеров вместе с документами. - person roolebo; 14.09.2019

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

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

person Thomas Tempelmann    schedule 08.12.2011

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

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

Аннотация

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

person MaD70    schedule 23.10.2009
comment
Ссылка на документ: research.microsoft.com / ru-ru / um / people / wdcui / paper / - person Steve Bennett; 14.10.2011

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

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

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

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

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

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

person Thomas Tempelmann    schedule 29.01.2009
comment
Похоже, чертовски приятно присоединиться к проекту ... Когда я работал исследователем антивирусов, это было бы очень удобно. Вместо этого я сделал все вручную ... Я скачаю это и проверю. Спасибо вам за это, мне это пригодится. :) - person LarryF; 13.02.2009
comment
Похоже на начало хорошего инструмента анализа двоичных файлов, но он все еще очень ориентирован на диск (512-байтовые блоки - это немного пустяк ...) - person Steve Bennett; 14.10.2011
comment
@SteveBennett: ему нравится кластеризовать файл в блоки равного размера, это правда, но можно легко изменить размер блока через меню. Кроме того, iBored может обрабатывать весь файл как один блок. Единственным недостатком является то, что у него будут проблемы с большими файлами, потому что он пытается показать все данные в одном прокручиваемом представлении блока, а затем как один блок, что может привести к проблемам с производительностью. - person Thomas Tempelmann; 18.10.2011

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

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

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

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

person mercator    schedule 24.02.2009
comment
URL мертв, может быть, он сейчас здесь: advanced-hex-editor-axe.en. softonic.com - person Steve Bennett; 14.10.2011
comment
@Steve Спасибо за предупреждение. Это тот самый. Однако, несмотря на все обещания отсутствия вирусов, мой антивирусный сканер выдал мне предупреждение о вирусе, пытаясь его загрузить, поэтому я не стал беспокоиться. Я перефразировал свой ответ. - person mercator; 15.10.2011

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

person oliver    schedule 23.05.2013
comment
(Ссылка не работает) - person jacobq; 09.03.2018

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

person 0xdabbad00    schedule 26.01.2013

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

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

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

person blueshift    schedule 07.12.2011