Interested Article - Hex-редактор
- 2020-02-22
- 1
|
Возможно, эта статья содержит
оригинальное исследование
.
|
Hex-редактор ( англ. hex-editor ), шестнадцатеричный редактор — приложение для редактирования данных, в котором данные представлены в « сыром виде » — как последовательность байтов . Он может быть как отдельным самостоятельным приложением, так и компонентом другого, более сложного приложения, такого как дизассемблер , отладчик , интегрированная среда разработки и т. п.
Для представления значения байтов используется шестнадцатеричная ( англ. hex adecimal ) система счисления , что и отражено в названии редактора. Выбор шестнадцатеричной системы счисления обусловлен следующими факторами:
-
Наибольшую популярность получили платформы с
8-битным
байтом. В таких платформах байт может принимать 2
8
=256 значений в диапазоне от 0 до 255. Число 256
10
, записанное в шестнадцатеричной системе, является
круглым
трёхзначным числом — 100
16
.
- То, что это число является трёхзначным, означает, что для представления любого числа в диапазоне 0—255 требуется не более 2 разрядов .
- То, что это число является круглым, означает, что для представления будут использованы все возможные комбинации цифр, и не останется неиспользованных (например, в случае использования десятичной системы , неиспользованными остаются комбинации, соответствующие числам от 256 до 999).
- При использовании шестнадцатеричной системы получается, что правая цифра соответствует младшим четырём битам байта, а левая цифра в записи — старшим 4 битам. Поэтому любые операций над 4-битными блоками, выровненными по границе байта, можно упрощённо производить как операции над соответствующими цифрами.
- 16 — минимальное основание системы счисления, при котором для записи достаточно двух разрядов. Системы с меньшим основанием потребовали бы уже три (и более) разряда, а возможность уложиться в один разряд обеспечила бы только система счисления с основанием 256, которая совершенно неприменима на практике из-за большого числа цифр в ней.
Данные, которые отображает и позволяет редактировать Hex-редактор, могут быть:
- образом диска ,
- содержимым отдельного файла ,
- содержимым оперативной памяти ,
- содержимым виртуального адресного пространства процесса ,
- и так далее.
Интерфейс
Hex-редактор отображает данные в виде матрицы , каждая ячейка которой соответствует одному байту , записанному в шестнадцатеричной системе счисления в виде двухзначного числа (с ведущим нулём , если он требуется). Количество столбцов матрицы является степенью двойки, чаще всего используются 16 или 8 колонок, иногда 4. Число строк зависит от количества байтов, которые требуется отобразить/отредактировать. В случае использования 16 колонок одна строка соответствует одному параграфу .
Кроме этого, часто используются дополнительные элементы:
- Слева от матрицы отображается линейка (на рисунке показана синим цветом) из чисел: каждой строчке соответствует число, означающее адрес/смещение первого байта этой строчки. Шаг адресов при этом равен количеству колонок.
-
Сверху от матрицы отображается другая линейка (на рисунке показана зелёным цветом) из чисел: над каждой колонкой отображается смещение байта, стоящего в этой колонке, относительно первого байта соответствующей строчки. Сумма числа, соответствующего
i
-той строке, и числа, соответствующегоj
-той колонке является адресом/смещением байта(i;j)
, стоящего на пересечении взятой строки и взятого столбца. -
Справа от матрицы могут отображаться те же данные, но в другой интерпретации. Наиболее часто используется альтернативное отображение данных как текста в кодировке
ASCII
(на рисунке показаны цветом
фуксия
), при этом байты, значения которых соответствуют непечатным символам, отображаются как
точки
(
·
). Многие редакторы позволяют выбрать произвольную кодировку для режима отображения текста. Вариант с отображением данных как текста встречается в Hex-редакторах общего назначения. В редакторах же, являющихся частью какой-либо специальной программы, например отладчика, обычно доступны другие режимы, такие как листинга дизассемблирования, подсказок об адресах, и другие специфичные для приложения режимы.
Большинство редакторов позволяют совершать редактирование как в левой половине, так и в правой (при её наличии). При этом совершаемые изменения когерентны .
Простые редакторы позволяют только менять значение выбранных байтов по отдельности. Продвинутые — редактировать совокупности байтов как цельные блоки , выполнять поиск по последовательностям или шаблонам последовательностей.
Hex-редакторы для редактирования образов дисков могут включать в себя функции по восстановлению повреждённой файловой системы или случайно удалённых файлов.
Использование
Hex-редакторы используются для редактирования не-текстовых данных, когда специализированной программы для редактирования имеющихся данных либо нет, либо её применение неоправданно или нежелательно. Примером может служить внесение изменений в скомпилированную программу без перекомпиляции последней. Так, с помощью Hex-редактора можно изменить значения жестко вшитых в код программы строковых и числовых констант, если правильно определить их расположение.
Если Hex-редактор имеет функции дизассемблера или дизассемблирование целевой программы уже было проведено с помощью другого инструмента заранее, и известно смещение, можно внести изменение непосредственно в код программы и изменить её поведение. Этим пользуются при исправлении ошибок , взломе , читерстве , ручном твикинге .
Поскольку Hex-редактор является достаточно универсальным инструментом, описать все варианты его применения не представляется возможным.
Галерея
-
Свободный hex-редактор KHexEdit входящий в состав KDE (kdeutils)
См. также
Примечания
- То есть изменения, сделанные в левой части, сразу же отображаются и в правой, и наоборот.
- Например, редактировать 8 байтов как число с плавающей точкой двойной точности .
- 2020-02-22
- 1