Вы, вероятно, знакомы с понятием текстового редактора — в Linux их множество, как для терминала, так и для рабочего стола. Варианты командной строки включают vi и nano, а на рабочем столе есть такие приложения, как gedit и Kate. Но что, если вам нужно отредактировать двоичный файл? Что вы можете использовать? Существует класс редакторов, известный как «Hex-редактор», который позволяет редактировать файлы любого типа, особенно двоичные.
Шестнадцатеричные редакторы получили свое название потому, что содержимое файла в основном отображается в виде шестнадцатеричных (шестнадцатеричных) чисел. Обычно мы считаем по десятичной системе счисления, то есть каждая цифра (или столбец) представляет собой коэффициент 10. Итак, 123 — это 3 единицы, 2 партии по 10 (т. е. 20) и 1 партия по 100 (т. е. 100). Это великолепно и идеально подходит для изучения математики в детстве, поскольку у нас десять пальцев! Один байт компьютерной памяти или дискового пространства может представлять число до 255. Проблема с десятичной системой заключается в том, что для отображения 255 нужны 3 цифры. Однако на самом деле вам не обязательно представлять значение в десятичной системе. Вы можете представить их в двоичном формате (т. е. по основанию 2) или в шестнадцатеричном формате (т. е. по основанию 16). В шестнадцатеричном формате каждая цифра или столбец представляет собой коэффициент 16, а не 10. Чтобы различать шестнадцатеричные числа и десятичные числа, шестнадцатеричные числа обычно имеют префикс «0x». Таким образом, 0x91 — это не девяносто один, а скорее 145. Это 9 лотов по 16 плюс 1. В шестнадцатеричном формате числа выглядят следующим образом: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, Б, В, Г, Е, Ж, 10, 11, 12 и так далее. Преимущество этой системы в том, что 255 (максимальное значение байта) можно записать как 0xFF (15 лотов по 16 плюс 15).
Шестнадцатеричный редактор использует эти двухзначные представления для создания простой сетки, по которой можно легко перемещаться, что было бы сложнее с трехзначными десятичными числами.
Для Linux доступно несколько различных шестнадцатеричных редакторов, и, как и текстовые редакторы, некоторые из них предназначены для работы в терминале, а другие — на рабочем столе. Hexcurse — простой текстовый редактор командной строки. Чтобы установить его в Ubuntu, введите в терминале следующее:
sudo apt-get install hexcurse
Чтобы опробовать проклятия, введите следующее:
hexcurse /bin/ls
Это запустит программу и загрузит двоичный файл «ls», который находится в «/bin».
Используйте клавиши со стрелками, страницу вверх и страницу вниз, чтобы перемещаться по сетке шестнадцатеричных чисел. Если вы введете число, байт в этот момент будет заменен на введенное вами число. Не пытайтесь сделать это сейчас, иначе вы можете нарушить работу команды «/bin/ls». Если вы нажмете TAB, курсор перейдет на сторону ASCII (текст), и вы сможете изменить значения, введя новые буквы, цифры и символы. Вот список основных ключей для использования hexcurse:
- F2 или CTRL+s – Сохранить
- F3 или CTRL+o – Открыть
- F4 или CTRL+g – Перейти
- F5 или CTRL+F – Найти
- F8 или CTRL+q – выход
Лучший способ безопасно поэкспериментировать с использованием шестнадцатеричного редактора — это отредактировать один из ваших собственных файлов (а не системный файл). Используйте nano для создания простой программы на C:
nano hello.c
Вырежьте и вставьте следующий код:
#include main() { printf("Hello Make Tech Easier!\n"); }
Скомпилируйте программу:
cc -o hello hello.c
Теперь вы можете безопасно вызвать hexcurse для полученного двоичного файла «hello». Если вы сломаете двоичный файл, это не будет иметь значения:
hexcurse hello
Прокрутите вниз, пока не увидите строку «Привет, сделайте технологию проще!» в правом разделе. Нажмите TAB, чтобы переключиться на редактирование ASCII, и перейдите к слову «Привет». Введите слово «ПРИВЕТ». Обратите внимание, что строка меняется в правой части, а шестнадцатеричные числа меняются в левой части. Новые шестнадцатеричные числа должны быть «48 45 4C 4C 4F», которые представляют собой значения ASCII для «HELLO».
Теперь сохраните файл, используя «Ctrl + s», и выйдите, нажав «Ctrl + q». Теперь вы можете запустить двоичный файл «hello» и увидите, что на выходе будет «HELLO Make Tech Easier!» а не «Привет, сделайте технологию проще!» Это потому, что вы отредактировали двоичный файл и изменили строку.
ghex — это настольный шестнадцатеричный редактор. Чтобы установить его, используйте:
sudo apt-get install ghex
Его можно запустить из панели запуска или из командной строки. Чтобы отредактировать двоичный тип «hello»:
ghex hello
Программа работает очень похоже на «hexcurse». Вы можете перемещаться с помощью клавиш со стрелками, на страницу вверх и на страницу вниз. TAB переключает между редактированием шестнадцатеричного кода или текста. «Ctrl+s» сохраняет файл и так далее. Поскольку это настольное приложение, в нем есть строка меню, в которой перечислены другие операции.
Эти инструменты могут быть очень мощными, но двоичные файлы легко повредить, поэтому используйте их осторожно. Если у вас есть какие-либо вопросы о «hexcurse» или «ghex», задавайте их в разделе комментариев, и мы посмотрим, сможем ли вам помочь.