Подтвердить что ты не робот

Как анализировать двоичный файл?

У меня есть двоичный файл. Я не знаю, как это отформатировано, я знаю, что это только код delphi.

Существует ли какой-либо способ анализа двоичного файла?

Существует ли какой-либо "шаблон" для анализа и десериализации двоичного содержимого файла с неизвестным форматом?

4b9b3361

Ответ 1

Попробуйте следующее:

  • Удалить данные: проанализируйте, как он скомпилировал ваш exe (попробуйте File Analyzer). Попробуйте десериализовать двоичные данные с открытым языком. Затем сериализуйте его в формате XML (независимо от языка), который может понимать каждый язык программирования.
  • Анализ двоичных данных: старайтесь сохранять различные версии файла с небольшими вариациями и использовать программу diff для анализа значения каждого бита с помощью шестнадцатеричного редактора. Используйте его в сочетании с бинарными методами взлома (например, Как взломать формат двоичного файла от Frans Faase)
  • Reverse Engineer приложение: попробуйте получить код с использованием инструментов обратного проектирования для языка программирования, используемого для сборки приложения (найдено с File Анализатор). В противном случае используйте инструмент анализа дизассемблера, например IDA Pro Disassembler

Ответ 2

Для моего проекта по хобби мне пришлось перепроектировать некоторые старые игровые файлы. Мои подходы:

  • Имейте хороший редактор hex.
  • Ищите читаемые слова в двоичном файле. Обратите внимание, как их распределение. Если расстояние между ними постоянное, вы знаете, что это список.
  • Найдите 2-3 последовательных нули. Может указывать значение int32.
  • Некоторые слова могут быть указателями в файл.
  • Попробуйте идентифицировать повторяющиеся шаблоны в файле.
  • Увидев много C0-CF, можно указать сжатые данные RLE.

Ответ 3

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

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

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

Ответ 4

Программа "строк" ​​из GNU binutils очень полезна. Он будет печатать строки печатаемых символов в файле, нередко давая ключ к тому, что содержит файл или программа.

Ответ 5

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

EDIT: если файл содержит сериализованные объекты delphi, тогда вы должны написать небольшую программу delphi, которая загружает ее, и "конвертировать" данные самостоятельно в нечто нейтральное, например, xml. Если вам удастся это сделать, вы должны проверить и посмотреть, поддерживает ли delphi сериализацию в xml. Затем вы можете получить доступ к этим объектам с любого языка.

Ответ 6

Если у вас есть доступ к приложению, которое создает файл, вы можете применить изменения к приложению, затем сохранить файл и посмотреть эффекты (помните, что числа, вероятно, хранятся в немного endian):

  • Сначала создайте файл повторно. Если файлы не являются двоичными, текущая дата/время, вероятно, сохраняется в области, где встречаются различия hte.
  • Возможно, вы хотите повторить это с помощью программного обеспечения, запущенного в разных средах, чтобы проверить, сохранена ли версия ОС и т.д., но это довольно необычно.
  • Далее вы можете попытаться изменить отдельные переменные и создать несколько файлов, которые отличаются только значением этой переменной. Это поможет вам определить, где хранится эта переменная.
  • Таким образом вы также можете исключить переменные, которые не хранятся в файле: если вы их измените, но созданные файлы идентичны, они не сохраняются.

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

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

Ответ 7

Если file не дает значимого ответа, вы можете попробовать TRiD от Marco Pontello, чтобы определить, являются ли ваши данные хранится в известном формате.

Ответ 8

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

Дополнительная информация: http://www.codeproject.com/KB/DLL/Win32APIHooking_Trouble.aspx

Ответ 9

Команда unix "file" действительно полезна - я не знаю, есть ли что-нибудь подобное в окнах. Вы запускаете его следующим образом:

file myfile.ext

И он выплескивает текстовое описание, основанное на магических числах и содержащихся в нем данных.

Возможно, он содержится в cygwin.

Ответ 10

Получите приложение Delphi и откройте его в бесплатную версию IDA Pro и найдите, где он пишет файл, и расшифруйте, как он пишет файл таким образом.

Если он не планирует текст.

Ответ 11

Я разработал Hexinator (Window и Linux) и Synalyze It! (macOS) именно для этой цели. Эти приложения позволяют вам видеть двоичные файлы, как в других шестнадцатеричных редакторах, но дополнительно вы можете создать "грамматику" со спецификацией формата двоичного файла. Грамматика содержит все строительные блоки и используется для автоматического анализа файла.

Таким образом, вы можете сохранить полученные знания в анализе и применить его одновременно к нескольким файлам. Вы также можете кодировать биты и фрагменты форматов файлов для быстрого обзора в шестнадцатеричном редакторе. Screen Shot of Synalyze It! Pro Результаты анализа отображаются в древовидном представлении, где вы также можете легко изменять файлы (применяя endianness et cetera).

Ответ 12

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

http://www.sweetscape.com/010editor/

Ответ 13

Попробуйте открыть его в шестнадцатеричном редакторе и проанализировать.