Hex

Hex

@Groon1k

Целью данной статьи является познакомить тех, кто про это слышит первый раз или не использовал подобное ранее. Приятного прочтения :)

Сегодня мы поговорим о том, что такое Hex формат, зачем он нужен и о его практическом применении.

Известно, что любые данные в компьютере хранятся и обрабатываются в виде последовательностей двоичного кода. Однако, считывать файлы в данном формате, мягко говоря, неудобно. Только представьте, что вы открываете какой-либо документ и видите километровые последовательности 0 и 1. Даже как-то не по себе. Поэтому данные преобразуются и представляются в читабельном виде.

Однако, если неизвестен формат файла или необходимо копнуть более глубоко, то чаще всего используется hex-редактор, который представляет любой файл в 16-й системе счисления (переводит последовательности байтов из 2-й системы в 16-ю) и позволяет изменять файл побайтно так как вам захочется. Уже можно догадаться, что hex (hexadecimal) — это обозначение шестнадцатеричной системы счисления.

Давайте разберёмся как это работает.

Например, у нас есть картинка:

Мы хотим посмотреть из чего она состоит. Открываем изображение в любом hex-редакторе, например https://hexed.it/. И наблюдаем следующее:

Как я и написал выше, hex редактор представляет файл в виде последовательности 16-ых цифр. 

Каждые цифры, например FF в начале, изначально состоят из 0 и 1, однако для удобства представляются в hex формате. Также hex-редактор отображает данные в ASCII, что можно увидеть справа от матрицы байтов. 

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

  • jpg
FF D8 FF E0 
  • rar
52 61 72 21 1A 07 00
  • xml
3c 3f 78 6d 6c 20

С более подробным списком можно ознакомиться здесь.

Смотрим дальше в наше изображение.

Если изменить маркер начала изображения [FF D8 …] на что-то другое, например [A8 D8 ...], то изображение, банально, не считается. Далее идёт маркер длины комментария [00 10] (в 10-й системе - это 16). Маркер означает, что дальше будет комментарий длинной в 16 байтов, включая длину маркера, получается, можно изменить длину комментария и сам комментарий. При этом изображение будет открываться и никаких изменений вы не увидите.

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

Например текст:

Можно даже архив, в котором будет .txt файл:

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

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

Частое применение hex-редактор находит в области reverse и forensic, но выступает в роли дополнения к различными анализаторам (пример) или дебагерам (и ещё пример райтапа). 

Надеюсь, что данная статья была для кого-то полезна и хоть немного познавательна. Если есть какие-то дополнения, то не стесняйтесь писать в комментариях.

Наш паблик в вк: https://vk.com/perm_ctf

Наш канал в телеге: https://t.me/permctf

Report Page