Interested Article - Hex-редактор

Hex-редактор ( англ. hex-editor ), шестнадцатеричный редактор приложение для редактирования данных, в котором данные представлены в « сыром виде » — как последовательность байтов . Он может быть как отдельным самостоятельным приложением, так и компонентом другого, более сложного приложения, такого как дизассемблер , отладчик , интегрированная среда разработки и т. п.

Для представления значения байтов используется шестнадцатеричная ( англ. hex adecimal ) система счисления , что и отражено в названии редактора. Выбор шестнадцатеричной системы счисления обусловлен следующими факторами:

Данные, которые отображает и позволяет редактировать Hex-редактор, могут быть:

Интерфейс

Схематичное изображение интерфейса типичного Hex-редактора. Отображаемые данные — всего лишь пример.

Hex-редактор отображает данные в виде матрицы , каждая ячейка которой соответствует одному байту , записанному в шестнадцатеричной системе счисления в виде двухзначного числа (с ведущим нулём , если он требуется). Количество столбцов матрицы является степенью двойки, чаще всего используются 16 или 8 колонок, иногда 4. Число строк зависит от количества байтов, которые требуется отобразить/отредактировать. В случае использования 16 колонок одна строка соответствует одному параграфу .

Кроме этого, часто используются дополнительные элементы:

  • Слева от матрицы отображается линейка (на рисунке показана синим цветом) из чисел: каждой строчке соответствует число, означающее адрес/смещение первого байта этой строчки. Шаг адресов при этом равен количеству колонок.
  • Сверху от матрицы отображается другая линейка (на рисунке показана зелёным цветом) из чисел: над каждой колонкой отображается смещение байта, стоящего в этой колонке, относительно первого байта соответствующей строчки. Сумма числа, соответствующего i -той строке, и числа, соответствующего j -той колонке является адресом/смещением байта (i;j) , стоящего на пересечении взятой строки и взятого столбца.
  • Справа от матрицы могут отображаться те же данные, но в другой интерпретации. Наиболее часто используется альтернативное отображение данных как текста в кодировке ASCII (на рисунке показаны цветом фуксия ), при этом байты, значения которых соответствуют непечатным символам, отображаются как точки ( · ). Многие редакторы позволяют выбрать произвольную кодировку для режима отображения текста. Вариант с отображением данных как текста встречается в Hex-редакторах общего назначения. В редакторах же, являющихся частью какой-либо специальной программы, например отладчика, обычно доступны другие режимы, такие как листинга дизассемблирования, подсказок об адресах, и другие специфичные для приложения режимы.

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

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

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

Использование

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

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

Поскольку Hex-редактор является достаточно универсальным инструментом, описать все варианты его применения не представляется возможным.

Галерея

См. также

Примечания

  1. То есть изменения, сделанные в левой части, сразу же отображаются и в правой, и наоборот.
  2. Например, редактировать 8 байтов как число с плавающей точкой двойной точности .
Источник —

Same as Hex-редактор