Hex
@Groon1k
Целью данной статьи является познакомить тех, кто про это слышит первый раз или не использовал подобное ранее. Приятного прочтения :)
Сегодня мы поговорим о том, что такое Hex формат, зачем он нужен и о его практическом применении.
Известно, что любые данные в компьютере хранятся и обрабатываются в виде последовательностей двоичного кода. Однако, считывать файлы в данном формате, мягко говоря, неудобно. Только представьте, что вы открываете какой-либо документ и видите километровые последовательности 0 и 1. Даже как-то не по себе. Поэтому данные преобразуются и представляются в читабельном виде.
Однако, если неизвестен формат файла или необходимо копнуть более глубоко, то чаще всего используется hex-редактор, который представляет любой файл в 16-й системе счисления (переводит последовательности байтов из 2-й системы в 16-ю) и позволяет изменять файл побайтно так как вам захочется. Уже можно догадаться, что hex (hexadecimal) — это обозначение шестнадцатеричной системы счисления.
Давайте разберёмся как это работает.
Например, у нас есть картинка:

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

Каждые цифры, например 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