Как выглядит бинарный файл
Перейти к содержимому

Как выглядит бинарный файл

Бинарные и текстовые форматы

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

Текстовый формат файла – это формат, основанный на plain text. Вся информация представлена в виде текста. В текстовом формате можно представить любую информацию – но её нужно закодировать в текстовый вид.

Особенно популярны текстовые форматы, разумеется, для текстовых документов. Не следует, однако, путать “текстовый формат” с “форматом plain text”. В текстовом формате может быть представлена и любая дополнительная информация – но она особым образом оформляется, чтобы отделить её от собственно текста документа.

Формат файла, не основанный на plain text, называется бинарным (от binary – англ. “двоичный”, поскольку в нём может использоваться любая последовательность двоичных данных). Например, офисный пакет Microsoft Office хранит документы, как правило, в файлах бинарных форматов.

Наиболее известный (и достаточно простой) текстовый формат – HTML . Он используется для Web-страниц. Вот как выглядит текст в формате HTML:

Это обычный текст страницы,

При просмотре Web-страницы данный текст будет выглядеть так:

Заметим, что информация о курсиве, переводе строки и ссылке (на сайт www.ru) указана в виде текста, но не попала в сам текст страницы. Также важно, что обычный перевод строки в файле не попал в текст страницы – строка переведена там, где была последовательность

Последовательности, заключённые в угловые скобки < >– не части текста, а способ указания дополнительной информации.

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

На основании формата XML, который является достаточно обобщённым, можно создать самые разные виды форматов файлов для разных целей. И многие современные программы хранят информацию именно в файлах формата XML. Так, офисный пакет OpenOffice.Org, с которым вам предстоит познакомиться в дальнейших уроках, использует файлы формата XML.

(Правда, OpenOffice.Org сжимает файлы при помощи встроенного архиватора, аналогичного Zip. Это нужно, чтобы уменьшить их размер; кроме того, внутри архива может быть несколько файлов, хотя они составляют один документ. Таким образом, формат OpenOffice.Org всё же является бинарным – но “раскрыв” содержимое архива при помощи стандартного архиватора Zip, можно получить данные в текстовом формате).

Бинарный файл: определение, правила и особенности работы

Lorem ipsum dolor

Бинарный формат — это формат, при котором информация записана при помощи последовательности байт. Бинарным он называетс я п отому , что все записи внутри файла делаются только при помощи «1» и «0». Такой формат еще называют двоичным, что не является ошибкой.

Бинарный формат — это противопоставление текстовому формату. Условно любую информацию для компьютера можно записать либо в бинарном формате, либо в текстовом. Кстати, код, написанный на любом языке программирования , — это текстовый формат. Текстовый формат понятен людям, а бинарный формат понятен компьютерам. Но есл и к опнуть «глубже» в сравнени е текстового и бинарного формата и взглянуть с технической реализации, тогда можно выяснить, что текстовый формат, по сути, является разновидностью бинарного формата. Любой текстовый файл конвертируется в бинарный, для того чтобы его мог «прочитать» компьютер. А любому текстовому символу соответствует бинарное сочетание символов , п оэтому с технической стороны каждый формат, используемый в компьютере, является бинарным.

Что такое бинарный формат или файл

  • beye;
  • hiew;
  • WinHex;
  • и др.
  • теоретическ и р едактировать бинарные файлы можно;
  • есть алгоритмы, которые могут конвертировать бинарны й фай л «обратно» в исходный файл.

Заключение

Бинарный формат документа — это специфический формат, который применяется «внутри» компьютерных устройств. «Бинарный» или «двоичный» означает, что документ состоит из последовательности единиц и нулей. Чтение и редактирование бинарного файла возможны при помощи специальных редакторов. Однако, чтобы понять все , написанное двоичным кодом, нужно обладать соответствующими знаниями.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Бинарный файл

Двоичный (бинарный) файл — в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary ) цифр.

В узком смысле слова двоичные файлы противопоставляются текстовым файлам. При этом с точки зрения технической реализации на уровне аппаратуры, текстовые файлы являются частным случаем двоичных файлов, и, таким образом, в широком значении слова под определение «двоичный файл» подходит любой файл.

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

Визуализация

Для наглядного представления двоичного файла он разбивается на куски равного размера, представляемые в виде чисел, записываемых, обычно, в шестнадцатеричной системе, иногда в восьмеричной, двоичной или десятичной. Означенный размер куска может быть равен одному октету, а также двум или четырём (в случае разбиения на куски по несколько октетов применяется порядок байтов, принятый на используемой платформе). Зависимость диапазона представляемых чисел от размера куска показана в таблице:

октетов кол-во бит шестнадцатеричное восьмеричное десятичное
беззнаковое
десятичное
знаковое
1 8 00

FF
000

377
0

255
-128

127
2 16 0000

FFFF
000000

177777
0

65535
-32768

32767
4 32 00000000

FFFFFFFF
00000000000

37777777777
0

4294967295
-2147483648

2147483647
00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 |.PNG. IHDR| 00000010 00 00 00 87 00 00 00 a0 08 03 00 00 00 11 90 8f |. | 00000020 b6 00 00 00 04 67 41 4d 41 00 00 d6 d8 d4 4f 58 |. gAMA. OX| 00000030 32 00 00 00 19 74 45 58 74 53 6f 66 74 77 61 72 |2. tEXtSoftwar| 00000040 65 00 41 64 6f 62 65 20 49 6d 61 67 65 52 65 61 |e.Adobe ImageRea| 00000050 64 79 71 c9 65 3c 00 00 03 00 50 4c 54 45 22 22 |dyq.e>>:99. 55| 00000090 35 51 50 50 37 37 37 11 11 11 25 25 25 0d 0d 0d |5QPP777. %%%. | 000000a0 27 27 27 1a 1a 1a 38 38 38 2a 2a 2a 08 08 08 20 |'''. 888***. | 000000b0 20 20 17 17 17 2e 2e 2e 13 13 13 bb bb bb 88 88 | . |

Инструменты

Для визуализации

  • debug (в Microsoft Windows, частично)
  • hexdump (в GNU/Linux и т. п.)

Разбор бинарных форматов. Часть 1

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

Основные понятия для начинающих

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

  • не бояться читать большое количество цифр.
  • понимать зачем и как структурированы цифры внутри файла.

Основной единицей представления данных, которые обычно используют для того чтобы хотя бы приблизительно продемонстрировать информацию в «сыром» виде, являются байты. Выглядеть это может вот так:

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

Что за правила используют для описания файла? Это спецификации форматов файлов, их можно найти в сети, обычно формат файла разрабатывается для ОС, либо для конкретного программного обеспечения. В обоих случаях ресурсы разработчиков софта должны содержать спецификацию. Попробуем найти спецификацию для формата файлов PE, которые используются для работы приложений в ОС Windows. Вот здесь лежит эта самая спецификация. Обычно это очень массивное писание, где по каждому параметру есть хотя бы общие замечания. Что можно или нужно сохранять, но эти правила не носят обязательный характер, так как сам разработчик программного обеспечения может отдельные параметры в файлах использовать под свои задачи. Поэтому в сети очень часто можно найти исследования обычных форматов файлов, но там будет описываться какая‑то особенность, которую не записали в спецификации.

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

Давайте попробуем рассмотреть инструменты для быстрого просмотра файлов, которые есть в наличии.

Инструменты для просмотра структуры и данных

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

  • 010 Hex Editor
  • Hiew
  • WinHex Editor

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

Для теста возьмем вот этот файл. Откроем его в Hiew:

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

В общем‑то процедура рассмотрения файла закончена, но это далеко не все возможности. Hiew так же поддерживает плагины, поэтому можно проводить дополнение функционала. Плагинов на самом деле существует очень много, но для нашей статьи наиболее интересен вот этот. Это плагин, который собрали на основе фреймворка для разбора форматов файлов и сетевых протоколов KaiTai Struct. Что же умеет этот плагин? Посмотрим на файл через него. Делать дополнительных настроек не нужно, достаточно просто скопировать файл hem из репозитория в директорию с hiew и открыть файл. Чтобы убедиться, что все работает как нужно, нажмите кнопку F11. Должен появиться список плагинов, который показан на картинке ниже:

А теперь просто выбираем плагин и смотрим, что он показывает. Как видно, у плагина есть целый список заготовленных форматов файлов, которые можно изучать с точки зрения структуры файла. Работает это так — KaiTai позволяет написать формат файла, так как это видит разработчик, а затем он самостоятельно подсвечивает отдельные части, которые могут быть подписаны или преобразованы для чтения. Выглядеть это может вот так для исполняемого файла ELF:

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

Попробуем на других форматах:

Кстати, нечто подобное можно делать и для Hex 010, но там для описания формата файла можно пользоваться так называемыми шаблонами, они пишутся с помощью языка программирования C. Можно сказать, это просто заголовочный файл, который определяет структуру файла, а Hex 010 заполняет его данными. Выглядит это так:

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

А сейчас приглашаю вас на бесплатный урок, в рамках которого рассмотрим способы, с помощью которых, можно перехватить API функции.

  • реверс-инжиниринг
  • reverse-engineering
  • бинарные форматы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *