Руководство по hex-редакторам

Материал из Old-Games.RU Wiki
Перейти к навигации Перейти к поиску
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Иногда возникает необходимость внести изменения в двоичный файл. Для этого используются так называемые hex-редакторы. Цель данного руководства - описать основные методы работы с ними и ответить на наиболее часто задаваемые вопросы.

Выбор редактора

Qview pic1.png
Qview pic2.png

Самым первым обычно возникает вопрос: какой редактор из всего многообразия существующих выбрать. Для изменения нескольких байт можно cмело использовать любой, но при частом или длительном использовании программа должна поддерживать все требуемые функции, быть удобной, быстрой и надежной. Исходя из этого можно рекомендовать к использованию, например, QView. Кроме перечисленных выше cвойств, он обладает следующими:

  • Работает в DOS и Windows
  • Содержит встроенные ассемблер и дизассемблер
  • Поддерживает кодировки текста DOS-866, Win-1251, KOI-8r и определяемые пользователем
  • Имеет широкие возможности настройки
  • Является бесплатным с открытыми исходными кодами

Скачать его можно на домашней странице проекта: http://www.agcproduct.com/rus/products/qview/.

Основное окно QView состоит из заголовка (вверху), рабочей области и панели функциональных клавиш (внизу). Для управления используются клавиатура и мышь. QView позволяет работать с данными в текстовом режиме, режиме шестнадцатеричного дампа и режиме дизассемблера. Режимы последовательно переключаются нажатием Enter или F4 (или щелчком левой кнопки мыши по заголовку в области расположения символов AV/HV/00). Режимы просмотра и редактирования переключаются нажатием Alt-F3 (в текстовом режиме - просто F3). Устанавливаемые после запуска режимы зависят от настроек, которые хранятся в файлах qview.ini, qview.fmg, qview.ehl и для изменения которых в составе пакета есть специальная программа - Q-Setup. Контекстная справка по используемым клавишам вызывается нажатием F1.

Открыть файл в редакторе можно передав его имя в качестве параметра командной строки: qview.exe <filename.ext> (в Windows длинные имена файлов необходимо заключать в двойные кавычки) либо через файловую панель, которая вызывается нажатием Alt-F6 или щелчком мыши по имени файла в заголовке. Для выхода из редактора следует нажать Escape.

Простейшее редактирование

Самая простая задача при редактировании двоичных файлов: заменить значение байта по смещению XXXXХХХХ значением YY. Для этого после открытия файла в редакторе необходимо нажатием Enter переключить вид в режим дампа. В рабочей области в левой колонке указано значение смещения, в центральной части - значения байт в шестнадцатеричном виде, справа - те же значения в виде символов ASCII.

Для установки курсора по требуемому смещению требуется нажать клавишу F5 (или щелкнуть в заголовке мышью по ряду цифр, выделенному красным цветом), ввести значение смещения и нажать Enter. Если режим редактирования не был включен, то следует нажать Alt-F3 (при этом в панели клавиш появится надпись "Edit ON"). После этого можно вносить изменения в файл, набирая значения байт в шестнадцатеричном виде или, переместив курсор в правую колонку нажатием TAB, в виде символов. Курсор позиционируется с помощью обычных клавиш управления или мышью.

Для отмены сделанных изменений cледует установить курсор в месте ошибки и несколько раз нажать F3. Сохранить изменения можно при выходе, нажав W, или принудительно, нажав Alt-F9.

Поиск и замена

Qview pic3.png

QView поддерживает поиск в файле определенных байт или строк и поиск по маске. Диалоговое окно поиска вызывается нажатием F7. В поле ASCII можно ввести строку в виде символов, а в поле HEX - в шестнадцатеричном виде. Щелчком мыши можно указать направление поиска ("Forward/Backward"), включить опции различения регистра символов для символьного поиска ("Sensitive") или поиск по маске ("Masking"). В последнем случае символ '?' маскирует соответствующий байт в строке. Например, при поиске "w?r?" будут найдены слова worm, warm, were и т.п. При нажатии Shift-F7 выполняется поиск следующего совпадения.

Для выполнения поиска с заменой необходимо нажать Ctrl-F7. В верхней части окна вводится строка или шаблон для поиска, в нижней - заменяющая строка.

Создание и использование crack-файлов

Crack-файлы являются самым распространенным способом записи изменений в двоичных файлах. В стандартном формате они состоят из трех колонок: смещения относительно начала редактируемого файла, значения байта до изменения и его значения после изменения:

00000150: 89 B8
00000151: 1E 03
00000152: F6 00
00000153: 10 CD
00000154: 83 10

Иногда в начало добавляется комментарий, начинающийся с символа '#'.

В QView для сохранения внесенных в файл изменений в виде crack-файла необходимо нажать Shift-F9, ввести в открывшемся окне имя файла и нажать Enter. Для внесения изменений из готового crack-файла cледует нажать Ctrl-F8, пропустить открывшемся окно, нажав Enter (в нем можно задать дополнительное смещение, что используется редко), в следующем окне ввести имя crack-файла и снова нажать Enter. Важное замечание: сразу после этого изменения будут записаны в файл и он будет автоматически сохранен. Переключать программу в режим редактирования не обязательно. Если при внесении изменений выводится сообщение об ошибке, значит, либо формат файла не соответствует стандартному, либо патч не подходит к файлу (байты "до изменения" не совпадают).


Работа с блоками

Qview pic4.png

Иногда возникает потребность сохранить часть двоичного файла, например, скопировать из него текстовые строки. Для работы с блоками редактор должен находиться в режиме дампа или дизассемблера. Для выделения требуемого блока следует установить курсор в его начало, нажать клавишу Insert, затем установить курсор в конец блока и снова нажать Insert. При этом блок выделяется желтым цветом.

Для сохранения блока в файл необходимо нажать Shift-F2, в появившемся окне указать имя и формат сохраняемого файла (в виде кода - "как есть", дампа или ассемблерного текста) и нажать Enter.

При вставке блока из файла следует аналогичным образом выделить блок, нажать Shift-F3 и в открывшемся окне указать имя файла-источника. При этом размер выделенного блока должен быть равен или меньше размера файла. Альтернативный вариант: установить курсор в позицию, начиная с которой должна быть произведена вставка, нажать Shift-F5 и в открывшемся окне указать имя файла-источника, смещение и длину блока внутри него, откуда требуется взять данные.

Чтобы удалить блок следует отметить его и нажать Shift-F4 или установить курсор в нужную позицию, нажать Ctrl-F5 и указать число удаляемых байт. Для вставки заполненного нулями блока в текущую позицию cледует нажать Ctrl-F4 и указать размер блока. Удалить файла до конца начиная с текущей позиции можно нажав Alt-F10.

При вставке блока, как и в случае с crack-Файлами, изменения сохраняются cразу после внесения.


Ассемблирование и ассемблерный поиск

Qview pic5.png

Ассемблирование используется для внесения изменений в алгоритм работы исполнимых файлов. QView поддерживает все команды процессоров Intel 486 и 487. В режиме ассемблера и дизассемблера в рабочей области редактора в первой колонке указано смещение относительно начала файла, во второй - байты инструкции, в третьей - ee мнемоническое обозначение. Для включения режима ассемблирования следует перевести редактор в режим дизассемблера, нажав несколько раз Enter, включить режим редактирования, нажав Alt-F3, и нажать TAB для перемещения курсора в третью колонку. После этого можно вводить инструкции, завершая ввод каждой нажатием Enter.

При необходимости можно, как и в режиме дампа, изменять непосредственно байты во второй колонке. Разрядность кода 16/32 переключается нажатием F2. Отменить изменения можно установив курсор на строку с ошибкой и несколько раз нажав F3.

Для поиска конкретных ассемблерных инструкций следует нажать F6, ввести инструкцию и нажать Enter. Поиск следующего совпадения производится нажатием Shift-F6. Для поиска по шаблону можно использовать следующие специальные символы:

'?' - любой один символ
'*' - любая подстрока до запятой или до конца строки
'$' - поиск числовых констант (ставится перед числом)
'%' - пропуск одного слова
'@' - любая подстрока

Например, "sub bx,*" - поиск всех инструкций вычитания из регистра BX.


Дополнительные функции

Из полезных дополнительных функций QView можно отметить наличие встроенного калькулятора, который вызывается при нажатии Ctrl-F6. Он поддерживает основные арифметические и логические поразрядные операции, скобки для указания приоритета операций, ввод аргументов и вывод результата в системах счисления с основанием 2, 8, 10, 16.

Просмотреть информацию из заголовка исполнимого файла можно нажав F8 в режиме дампа или дизассемблера. Поддерживаются файлы форматов MZ, PE, NE, LX, LE.