Бинарный файл: определение, правила и особенности работы
Бинарный формат — это формат, при котором информация записана при помощи последовательности байт. Бинарным он называетс я п отому , что все записи внутри файла делаются только при помощи «1» и «0». Такой формат еще называют двоичным, что не является ошибкой.
Бинарный формат — это противопоставление текстовому формату. Условно любую информацию для компьютера можно записать либо в бинарном формате, либо в текстовом. Кстати, код, написанный на любом языке программирования , — это текстовый формат. Текстовый формат понятен людям, а бинарный формат понятен компьютерам. Но есл и к опнуть «глубже» в сравнени е текстового и бинарного формата и взглянуть с технической реализации, тогда можно выяснить, что текстовый формат, по сути, является разновидностью бинарного формата. Любой текстовый файл конвертируется в бинарный, для того чтобы его мог «прочитать» компьютер. А любому текстовому символу соответствует бинарное сочетание символов , п оэтому с технической стороны каждый формат, используемый в компьютере, является бинарным.
Что такое бинарный формат или файл
- beye;
- hiew;
- WinHex;
- и др.
- теоретическ и р едактировать бинарные файлы можно;
- есть алгоритмы, которые могут конвертировать бинарны й фай л «обратно» в исходный файл.
Заключение
Бинарный формат документа — это специфический формат, который применяется «внутри» компьютерных устройств. «Бинарный» или «двоичный» означает, что документ состоит из последовательности единиц и нулей. Чтение и редактирование бинарного файла возможны при помощи специальных редакторов. Однако, чтобы понять все , написанное двоичным кодом, нужно обладать соответствующими знаниями.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Бинарные и текстовые форматы
Все форматы файлов (включая и форматы для хранения текстовых документов в файлах) можно подразделить на бинарные и текстовые .
Текстовый формат файла – это формат, основанный на 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, можно получить данные в текстовом формате).
Как выглядит бинарный файл
Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2024. Stepik
Наши условия использования и конфиденциальности
Public user contributions licensed under cc-wiki license with attribution required
Разбор бинарных форматов. Часть 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
- бинарные форматы