Как редактировать шестнадцатеричный файл
Обновлено: 21.11.2024
UltraEdit — это больше, чем просто текстовый редактор. Он также включает режим шестнадцатеричного редактора, который иногда называют редактором двоичных файлов или редактором байтов. Попробуйте бесплатно в течение 30 дней.
- Шестнадцатеричный редактор позволяет редактировать любой двоичный файл, отображает двоичный и ASCII-файлы.
- Режим редактирования Hex/EBCDIC
- Вставить/удалить шестнадцатеричные байты
- Найти и заменить шестнадцатеричные байты
- Копировать выбранный шестнадцатеричный вид
- Перейти к шестнадцатеричному байту/адресу
- Редактируемое количество шестнадцатеричных значений в строке.
- И многое другое.
На снимке экрана ниже показан файл JSON, просматриваемый в режиме обычного текстового редактора (слева) и в режиме шестнадцатеричного редактора (справа). Файл JSON вызывает ошибки синтаксического анализа в приложении, которое его читает, из-за недопустимого символа в файле. В режиме редактирования текста этот символ не виден и выглядит как пробел. Однако в режиме шестнадцатеричного редактирования шестнадцатеричный нулевой (00 байт) символ легко распознается и может быть быстро удален или заменен.
Что делает шестнадцатеричный редактор?
Шестнадцатеричный редактор можно использовать для редактирования файлов практически любого типа. Вы можете использовать шестнадцатеричный редактор для управления низкоуровневыми байтами, которые обычно абстрагируются операционной системой и/или приложением, обрабатывающим определенный тип файла. Проще говоря, шестнадцатеричный редактор позволяет редактировать базовые байты, составляющие любой файл.
Используя текст в качестве примера, в UltraEdit, когда вы видите букву «A» в текстовом режиме, базовое значение байта для символа «A» равно 41. Windows, UltraEdit и другие приложения «видят» 41-байтовое значение. и интерпретируйте его как символ «A» — печатая это на экране, что вы видите, когда открываете файл. Тем не менее, шестнадцатеричный редактор обычно не используется для редактирования удобочитаемого простого текста, такого как буква «А»; скорее он чаще всего используется для просмотра и редактирования непечатаемых символов, управляющих кодов, символов форматирования и многого другого.
На снимке экрана ниже показан файл JSON, просматриваемый в режиме обычного текстового редактора (слева) и в режиме шестнадцатеричного редактора (справа). Файл JSON вызывает ошибки синтаксического анализа в приложении, которое его читает, из-за недопустимого символа в файле. В режиме редактирования текста этот символ не виден и выглядит как пробел. Однако, как вы можете видеть ниже, в режиме шестнадцатеричного редактирования шестнадцатеричный нулевой (00-байтовый) символ легко идентифицируется и может быть быстро удален или заменен.
Шестнадцатеричная система счисления почти повсеместно используется в вычислениях, и не без причины. Имеется шестнадцать шестнадцатеричных цифр — от 0 до 9 и от A до F (которые соответствуют десятичным значениям от 10 до 15), и каждая шестнадцатеричная цифра представляет ровно четыре бита. Ровно две шестнадцатеричных цифры представляют собой байт, который может иметь значение от 00 до FF (то есть от 0 до 255 десятичных знаков). Чтобы найти шестнадцатеричное значение многобайтового объекта, вы должны объединить его байты, например, байты 58 A4 1B FE составляют четырехбайтовое значение 58A41BFE (или FE1BA458, если компьютер использует обратный порядок байтов). р>
Мне действительно нужно это знать?
Да, вы должны иметь некоторое представление о шестнадцатеричной системе счисления; на самом деле, больше нечего знать. Шестнадцатеричный байт — это единственный тип объекта, который обрабатывает компьютер, а шестнадцатеричный байт используется для представления чего угодно. Например, шестнадцатеричный байт 50 может представлять собой заглавную букву P, команду процессора "push eax", десятичное число 80, компонент цвета с яркостью 31 % или множество других вещей.
Очевидный вопрос: "Как узнать, что представляет собой байт?" Что ж, иногда вы можете это сказать легко, иногда – не так просто, а во многих случаях вы вообще этого не можете сказать. Обычно строку символов легко распознать, но в других случаях вам придется угадывать. К счастью, это не так плохо, как кажется, и вы быстро освоите несколько приемов.
Но пока достаточно понять, что 1) любые компьютерные данные — это всего лишь массив шестнадцатеричных байтов, и 2) шестнадцатеричный редактор — это программа, которая показывает истинное содержимое файла и позволяет редактировать данные, которые вы обычно не может.
Главное окно редактирования
Пришло время опробовать наши новые знания и посмотреть, как выглядят шестнадцатеричные данные. Установите FlexHEX, если вы еще этого не сделали. Щелкните правой кнопкой мыши любой двоичный файл в окне проводника Windows и выберите «Редактировать с помощью FlexHEX». Вы увидите бинарное содержимое в главном окне редактирования FlexHEX:
Вы можете увидеть четыре отдельные области, отмеченные разными цветами. Самая левая — это адресная панель; каждое число на панели показывает адрес первого байта соответствующей строки.Единственным исключением является строка, на которой стоит вводная вставка — она показывает адрес текущего байта, а не первого. Адреса отображаются в виде шестнадцатеричных чисел, но если вы наведете курсор мыши на адрес, десятичное значение появится во всплывающем окне быстрого просмотра.
Следующая панель представляет собой Hex-панель, в которой содержимое файла отображается в виде массива шестнадцатеричных байтов. На светло-зеленой панели ANSI содержимое файла отображается в виде символов, а на самой правой панели UNICODE отображаются двухбайтовые символы UNICODE.
Обратите внимание, что все три области данных показывают разные представления одних и тех же данных. Если вы измените данные в любой панели данных, две другие изменятся соответственно. Вы можете переключаться между панелями, нажимая клавишу Tab или Shift-Tab, или просто наведя курсор мыши и нажав левую кнопку мыши.
Проверка данных
Шестнадцатеричные числа могут быть полезны для компьютеров, но как преобразовать шестнадцатеричное число в более удобное для человека десятичное значение? Легкий! Сначала выберите номер либо с помощью мыши, либо с помощью клавиши со стрелкой, удерживая нажатой клавишу Shift. Во-вторых, переместите курсор мыши в выбранную область, и FlexHEX отобразит все допустимые представления во всплывающем окне быстрого просмотра.
Иногда допустимое представление вообще отсутствует. Например, если вы выберете пять байтов, окна быстрого просмотра не будет, потому что FlexHEX не знает ни одного объекта длиной пять байтов. Однако любое поле длиной 1, 2, 4, 8 или 16 байт имеет по крайней мере одно допустимое представление. Как правило, когда курсор мыши принимает форму стрелки с вопросительным знаком, это означает, что FlexHEX есть что вам показать, и окно быстрого просмотра готово к отображению.
Редактирование данных
Теперь, когда мы знаем основы, давайте перейдем непосредственно к шестнадцатеричному редактированию. Запустите FlexHEX, и вы увидите главное окно редактирования с автоматически созданным новым пустым файлом. Он имеет нулевую длину, но может быть расширен — светло-серые прямоугольники отмечают позиции, в которые можно вводить новые данные. Введите шестнадцатеричные байты 4D 61 72 79 20, начиная с позиции 0, где изначально был символ вставки:
Теперь нажмите клавишу Tab, чтобы переключиться на зеленую панель ANSI, и введите have a little lamb . Легко видеть, что каждый байт на панели Hex соответствует некоторому символу на панели ANSI. Когда вы вводите шестнадцатеричное значение, соответствующий символ появляется на панели ANSI, и наоборот.
Не бойтесь ошибиться — FlexHEX имеет неограниченный список отмены/возврата. Если вы сделали что-то не так, просто нажмите Ctrl-Z, чтобы отменить действие.
Редактирование существующего файла
Простая, но довольно типичная задача — перейти по какому-то адресу и заменить какие-то байты. В качестве примера мы изменим строку байтов EB 1F 5F FB на 01 00 00 00 по адресу 52E1C.
Первый шаг — найти данные, которые нужно изменить. Выберите команду Навигация / Перейти или просто нажмите Ctrl-G и введите адрес:
Не забудьте обратить внимание на селектор Dec/Hex. FlexHEX достаточно умен, чтобы распознавать шестнадцатеричное число, если оно содержит шестнадцатеричные цифры от A до F, но если число состоит только из десятичных цифр, убедитесь, что вы выбрали правильную систему счисления.
Мы нашли данные, но прежде чем вводить новые значения, проверьте индикатор режима вставки в строке состояния. Если отображается ПЕРЕЗАПИСЬ, вновь введенные данные заменят данные в текущей позиции, отмеченной мигающим курсором ввода.
Режим INSERT работает иначе. Существующие данные, начиная с текущей позиции, смещаются ниже, освобождая место для данных, которые вы вводите. Обратите внимание, что это изменит положение всех объектов данных ниже точки вставки. Многие файлы повреждаются, если их данные были смещены, поэтому будьте осторожны и следите за индикатором сдвига в строке состояния.
Если текущий режим — INSERT, нажмите клавишу Insert, чтобы переключиться в режим ПЕРЕЗАПИСЬ.
Теперь введите новые шестнадцатеричные данные:
Возможно, вы заметили, что на панели Навигация появилась новая вкладка Измененные. Щелкните вкладку, чтобы открыть панель:
На этой панели перечислены все измененные области файла. Нажмите на начальный или конечный адрес области, чтобы перейти туда; чтобы выделить всю область, нажмите на поле размера.
Изменение введенных значений
Иногда вам нужно внести изменения в типизированный объект, а не только в последовательность шестнадцатеричных байтов. С FlexHEX это не сложнее, чем простое шестнадцатеричное редактирование. Выберите объект (обычно длиной 1, 2, 4, 8 или 16 байт), щелкните правой кнопкой мыши и выберите в меню команду Редактировать выбранное как:
UltraEdit хорошо известен как превосходный текстовый редактор. Тем не менее, это также чрезвычайно популярный шестнадцатеричный редактор. На самом деле UltraEdit появляется на так называемой «нулевой позиции» для поиска «лучший шестнадцатеричный редактор».
Несмотря на это, шестнадцатеричные редакторы, как правило, не так хорошо понимаются, как текстовые. А поскольку многие другие шестнадцатеричные редакторы на рынке являются специализированными шестнадцатеричными редакторами, мы решили посвятить статью тому, что такое шестнадцатеричные редакторы и что вы можете с ними делать.
Что такое шестнадцатеричный редактор?
Шестнадцатеричный редактор — это специальный тип редактора, который может открывать файлы любого типа и отображать их содержимое, байт за байтом.
Большую часть времени, когда вы открываете файл, вы видите, как программа интерпретирует содержимое этого файла. Даже файлы с открытым текстом содержат невидимые символы, обозначающие начало файла, места разрыва строк, конец файла и т. д.
Вы можете просмотреть эти невидимые символы (и обычные символы тоже) в шестнадцатеричном редакторе, где они отображаются в виде шестнадцатеричных значений.
Что такое шестнадцатеричный формат и почему мы его используем?
«Шестнадцатеричный» в «шестнадцатеричном редакторе» — это сокращение от шестнадцатеричной системы счисления с основанием 16. Это немного запутанно, но мы постараемся объяснить.
Основание 16 – это система счисления, в которой в качестве основания используется число 16, отсюда и название. Самый простой способ понять основание 16 — это понять основание 60 и 10. К счастью для нас, вы уже знакомы с ними обоими.
Основание 10 – это система счисления, с которой мы лучше всего знакомы. В базе 10 все кратно десяти. В базе 10 вы добавляете цифры, кратные десяти. 1-9 получают одну цифру, 10-99 получают две цифры, 100-999 получают три цифры и так далее. База 10 также называется «десятичной». Другой способ думать о базе 10 состоит в том, что все является дробью с десятью внизу. .5 на самом деле 5/10. 1 на самом деле 10/10. 2 на самом деле 20/10.
Основание 60 такое же, как основание 10, за исключением того, что 60 — это ключевое число. Если это звучит запутанно, не беспокойтесь — вы знали основание 60 всю свою жизнь, потому что по основанию 60 мы определяем время. Каждая минута часа на самом деле представляет собой дробь с 60 внизу. 1:45 — это 1 и 45/60, или 1 и 0,75 часа. Вот почему так сложно заполнять десятичные табели учета рабочего времени. Легко думать, что 15 минут = 0,15 часа, но 0,15 часа на самом деле 9 минут! Это потому, что 0,15 часа записаны в десятичной системе счисления, а 9 минут — в шестидесятой (на самом деле 9 минут — это 9/60 часа)
Основание 16 совпадает с основанием 10 и 60, за исключением того, что на этот раз 16 – это число ключа. Чтобы сосчитать до 16 по основанию 16, выполните следующие действия: 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10. Это сбивает с толку, но «11» на самом деле «B» в шестнадцатеричном формате; аналогично «А» в шестнадцатеричном формате будет «10» в десятичном. Иными словами, 110/10 (основание 10) — это то же самое, что 176/16 (основание 16). Преобразование между основанием 10 и основанием 16 сбивает с толку, поэтому лучше всего использовать конвертер, подобный этому. Однако преобразование между основанием 2 (также называемым двоичным) и основанием 16 невероятно просто, поэтому мы его и используем.
Мы используем шестнадцатеричный формат, потому что это хороший компромисс между основанием 10 и основанием 2. Основание 2 — это язык компьютеров. В двоичном формате всего два числа: 1 и 0. Число «2» в системе счисления 10 представлено как 0010 в двоичном формате, число «3» в системе счисления 10 — это 0011 в двоичном формате и так далее. Если вы посмотрите на двоичный код, вы начнете замечать, что двоичному коду требуется несколько цифр для представления того, что для представления в системе счисления с основанием 10 требуется всего одна или две цифры. 17 в базе 10 (две цифры) равно 0001 0001 (восемь цифр) в двоичном формате. Легко заметить, что чистый двоичный код быстро становится неуправляемым. Но преобразовать из базы 10 в базу 2 и обратно сложно. Даже если бы компьютер мог выполнить эту работу, это заняло бы довольно много времени, что замедлило бы выполнение всех задач обработки.
Шестнадцатеричный формат, с другой стороны, представляет собой идеальное сочетание удобочитаемости (многие числа могут быть представлены в шестнадцатеричном формате с помощью пары из двух цифр) и простоты преобразования (преобразование между двоичным и шестнадцатеричным числами тривиально — вам нужно только умножь или раздели на восемь!). Если вам нужно более подробное описание того, как шестнадцатеричные числа стали доминировать в компьютерном мире, прочитайте этот пост Николая Саваса.
Итак, когда вы видите шестнадцатеричные значения файла, вы на самом деле видите отдельные биты, составляющие этот файл, преобразованные в шестнадцатеричные.Теперь, когда замысловатые объяснения ушли, для чего нужны шестнадцатеричные редакторы?
Исправить поврежденные файлы
Когда файл повреждается, например аудиофайл, который не воспроизводится, вы часто не понимаете, что на самом деле не так с файлом — вы просто знаете, что он поврежден. Однако вы можете просмотреть байты файла и диагностировать проблемы с помощью шестнадцатеричного редактора.
Это именно то, что сделал пользователь YouTube Стивен Чепмен в своем видео "Введение в шестнадцатеричные редакторы и скрипты". В видео Чепмен диагностирует файлы MV, которые не будут воспроизводиться должным образом. Используя шестнадцатеричный редактор, Чепмен обнаруживает, что файлы MV на самом деле были переименованы в файлы OGG, еще одного популярного аудиоформата. Он также узнал, что данные, определяющие тип файла «OGGS», в данном случае отсутствуют в поврежденных файлах. Он использовал шестнадцатеричный редактор для вставки соответствующих данных, и файлы воспроизводились должным образом.
Обратный инжиниринг старых или неизвестных файлов
Программы и игры часто используют файлы собственного типа, которые декомпилирует и использует внутрипрограммный (или игровой) движок. Однако, если исходная программа недоступна (или не существует), вы не сможете открыть файл, если у вас нет шестнадцатеричного редактора.
Поскольку шестнадцатеричные редакторы показывают необработанные данные файла, а не интерпретацию этих данных, шестнадцатеричные редакторы могут открывать файлы абсолютно любого типа, что позволяет вам копаться и выяснять, что они собой представляют на самом деле.
Избавьтесь от невидимых данных
В некоторых случаях шестнадцатеричные редакторы могут помочь вам избавиться от водяных знаков или других данных, скрытых в файле.
Например, иногда, когда вы копируете текст из HTML (например, в электронном письме) в текстовый редактор, функция копирования и вставки подбирает скрытый символ, который поместил туда почтовый клиент. Часто это пустой символ, сигнализирующий программе, что можно безопасно разорвать строку. В этих случаях вы не сможете найти или отредактировать этот символ, если у вас нет шестнадцатеричного редактора, который покажет вам источник невидимого символа и позволит вам его удалить.
Развлекательная программа
Шестнадцатеричные редакторы — излюбленный инструмент сообществ разработчиков модификаций игр, и есть еще несколько способов использования шестнадцатеричного редактора, которые немного интереснее:
- Разбивка гифок (как эта)
- Моддинг игр
- Изменение файлов сохранения игры
Попробуйте UltraEdit сегодня
UltraEdit — это гораздо больше, чем просто текстовый редактор. С UltraEdit вы найдете инструмент, который справится с любой задачей, которую вы можете перед ним поставить, от поиска и замены сложных строк в файлах до взлома файла и отображения источника байтов внутри.
Если вы или ваша компания считаете, что UltraEdit вам подходит, мы приглашаем вас попробовать его бесплатно в течение 30 дней. Если вы купите программу после пробного периода и не будете удовлетворены, мы полностью вернем вам деньги без вопросов.
HxD — это тщательно разработанный и быстрый шестнадцатеричный редактор, который, помимо редактирования необработанных дисков и модификации основной памяти (ОЗУ), обрабатывает файлы любого размера.
Простой в использовании интерфейс предлагает такие функции, как поиск и замена, экспорт, контрольные суммы/дайджесты, вставка шаблонов байтов, уничтожение файлов, объединение или разделение файлов, статистика и многое другое.
Редактирование работает так же, как в текстовом редакторе, с упором на простую и ориентированную на задачу операцию, поскольку такие функции были упрощены, чтобы скрыть чисто технические различия.
Например, диски и память представлены как файл и показаны как единое целое, в отличие от представления с ограничениями по секторам/регионам, которое обрезает данные, которые потенциально принадлежат друг другу. Диски и память можно редактировать так же, как и обычный файл, включая поддержку отмены. Кроме того, разделы памяти определяют складную область, а недоступные разделы по умолчанию скрыты.
Более того, мы приложили много усилий, чтобы сделать операции быстрыми и эффективными, вместо того, чтобы заставлять вас использовать специальные функции по техническим причинам или произвольно ограничивать размер файлов. Это включает в себя отзывчивый интерфейс и индикаторы выполнения длительных операций.
Возможности
Версия | 2.5.0.0 (11 февраля 2021 г.) Что нового? | ||||
---|---|---|---|---|---|
ОС | Windows XP, 2003, Vista, 7, 8 или 10 | ||||
|