Русская Википедия:Hex-редактор
Шаблон:Значения Шаблон:Нет ссылок Шаблон:Орисс Hex-редактор (Шаблон:Lang-en), шестнадцатеричный редактор — приложение для редактирования данных, в котором данные представлены в «сыром виде» — как последовательность байтов. Он может быть как отдельным самостоятельным приложением, так и компонентом другого, более сложного приложения, такого как дизассемблер, отладчик, интегрированная среда разработки и т. п.
Для представления значения байтов используется шестнадцатеричная (Шаблон:Lang-en) система счисления, что и отражено в названии редактора. Выбор шестнадцатеричной системы счисления обусловлен следующими факторами: Шаблон:Hider
Данные, которые отображает и позволяет редактировать Hex-редактор, могут быть:
- образом диска,
- содержимым отдельного файла,
- содержимым оперативной памяти,
- содержимым виртуального адресного пространства процесса,
- и так далее.
Интерфейс
Hex-редактор отображает данные в виде матрицы, каждая ячейка которой соответствует одному байту, записанному в шестнадцатеричной системе счисления в виде двухзначного числа (с ведущим нулём, если он требуется). Количество столбцов матрицы является степенью двойки, чаще всего используются 16 или 8 колонок, иногда 4. Число строк зависит от количества байтов, которые требуется отобразить/отредактировать. В случае использования 16 колонок одна строка соответствует одному параграфу.
Кроме этого, часто используются дополнительные элементы:
- Слева от матрицы отображается линейка (на рисунке показана синим цветом) из чисел: каждой строчке соответствует число, означающее адрес/смещение первого байта этой строчки. Шаг адресов при этом равен количеству колонок.
- Сверху от матрицы отображается другая линейка (на рисунке показана зелёным цветом) из чисел: над каждой колонкой отображается смещение байта, стоящего в этой колонке, относительно первого байта соответствующей строчки. Сумма числа, соответствующего
i
-той строке, и числа, соответствующегоj
-той колонке является адресом/смещением байта(i;j)
, стоящего на пересечении взятой строки и взятого столбца. - Справа от матрицы могут отображаться те же данные, но в другой интерпретации. Наиболее часто используется альтернативное отображение данных как текста в кодировке ASCII (на рисунке показаны цветом фуксия), при этом байты, значения которых соответствуют непечатным символам, отображаются как точки (
·
). Многие редакторы позволяют выбрать произвольную кодировку для режима отображения текста. Вариант с отображением данных как текста встречается в Hex-редакторах общего назначения. В редакторах же, являющихся частью какой-либо специальной программы, например отладчика, обычно доступны другие режимы, такие как листинга дизассемблирования, подсказок об адресах, и другие специфичные для приложения режимы.
Большинство редакторов позволяют совершать редактирование как в левой половине, так и в правой (при её наличии). При этом совершаемые изменения когерентны[1].
Простые редакторы позволяют только менять значение выбранных байтов по отдельности. Продвинутые — редактировать совокупности байтов как цельные блоки[2], выполнять поиск по последовательностям или шаблонам последовательностей.
Hex-редакторы для редактирования образов дисков могут включать в себя функции по восстановлению повреждённой файловой системы или случайно удалённых файлов.
Использование
Hex-редакторы используются для редактирования не-текстовых данных, когда специализированной программы для редактирования имеющихся данных либо нет, либо её применение неоправданно или нежелательно. Примером может служить внесение изменений в скомпилированную программу без перекомпиляции последней. Так, с помощью Hex-редактора можно изменить значения жестко вшитых в код программы строковых и числовых констант, если правильно определить их расположение.
Если Hex-редактор имеет функции дизассемблера или дизассемблирование целевой программы уже было проведено с помощью другого инструмента заранее, и известно смещение, можно внести изменение непосредственно в код программы и изменить её поведение. Этим пользуются при исправлении ошибок, взломе, читерстве, ручном твикинге.
Поскольку Hex-редактор является достаточно универсальным инструментом, описать все варианты его применения не представляется возможным.
Галерея
-
Свободный hex-редактор KHexEdit входящий в состав KDE (kdeutils)
См. также
Примечания
- ↑ То есть изменения, сделанные в левой части, сразу же отображаются и в правой, и наоборот.
- ↑ Например, редактировать 8 байтов как число с плавающей точкой двойной точности.