Шестнадцатеричный дамп

редактировать
Шестнадцатеричный вид компьютерных данных

Шестнадцатеричный дамп 318 байта Wikipedia favicon

В computing, шестнадцатеричный дамп - это шестнадцатеричный просмотр (на экране или на бумаге) компьютерных данных из RAM или из компьютерного файла или запоминающего устройства. Просмотр шестнадцатеричного дампа данных обычно выполняется в контексте либо d ebugging или обратный инжиниринг.

В шестнадцатеричном дампе каждый байт (8- бит ) представлен как двузначное шестнадцатеричное номер. Шестнадцатеричные дампы обычно организованы в строки по 8 или 16 байтов, иногда разделенные пробелами. Некоторые шестнадцатеричные дампы имеют шестнадцатеричный адрес памяти в начале и / или байт контрольной суммы в конце каждой строки.

Хотя название подразумевает использование вывода в формате base-16, некоторые программы для вывода шестнадцатеричного дампа могут иметь опции для вывода base-8 (восьмеричный) или base-10 (десятичный). Некоторые общие имена для этой программной функции: hexdump, hd, od , xxdи просто dumpили даже D.

Contents
  • 1 Примеры
  • 2 Контрольная сумма
  • 3 Сжатие повторяющихся строк
  • 4 od и hexdump
  • 5 DUMP, DDT и DEBUG
  • 6 Ссылки
  • 7 Внешние ссылки
Образцы

Пример частичного шестнадцатеричного дампа программы, созданного программой Unix hexdump:

00105e0 e6b0 343b 9c74 0804 e7bc 0804 e7d5 0804 00105f0 e7e4 0804 e6b0 0804 e7f0 0804 00804 e6b0 0804 e7f0 0804 00804 e6b0 0804 e7f0 0804 0804 e6b0 e81a 0804 e6b0 0804 e6b0 0804

Крайний левый столбец - это шестнадцатеричный адрес для 16-битных значений следующих столбцов. Каждая строка представляет 16 байтов (10 в шестнадцатеричном формате).

Однако приведенный выше пример представляет неоднозначную форму шестнадцатеричного дампа, поскольку порядок байтов может быть неопределенным. Такие шестнадцатеричные дампы хороши только в контексте хорошо известного стандарта порядка байтов или когда значения намеренно указаны в их полной форме (и могут привести к переменному количеству байтов), например:

00105e0 e6 b008 04e79e08 04e7bc 08 04 e7 d50804

Если требуется явная последовательность байтов (например, для шестнадцатеричного дампа программ машинного кода или содержимого ROM ) побайтно предпочтение отдается представлению, обычно организованному в 16-байтовые строки с необязательным разделителем между 8-байтовыми группами:

00105e0 e6 b0 08 04 e7 9e 08 04-e7 bc 08 04 e7 d5 08 04 00105f0 e7 e4 08 04 e6 b0 08 04-e7 f0 08 04 e7 ff 08 04 0010600 e8 0b 08 04 e8 1a 08 04-e6 b0 08 04 e6 b0 08 04

Редко также используется сжатая форма без символы пробела между значениями:

00105e0 e6b00804e79e0804e7bc0804e7d50804 00105f0 e7e40804e6b00804e7f00804e7ff0804 0010600 e80b0804e81a0804e6b00804 по умолчанию <два слова по умолчанию <те же, что и в формате A по умолчанию <эти же 4>x86 (little-endian ) компьютер обычно выглядит так:

00105e0 b0e6 0408 9ee7 0408 bce7 0408 d5e7 0408 00105f0 e4e7 0408 b0e6 0408 f0e7 0408 ffe7 0408 0408600 1be7 0408 0408600 0be b0e6 0408 b0e6 0408

Часто дополнительный столбец показывает соответствующий перевод текста ASCII (например, hexdump -Cили hd):

0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66 Википедия, f 0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61 ree encyclopedia 0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E что любой может 0030: 20 65 64 69 74 00 00 00 00 00 00 00 00 00 00 00 edit...........
Контрольная сумма

Когда шестнадцатеричные дампы предназначены для ручного ввода в компьютер, как это было в случае с печатными журнальными статьями домашний компьютер эпохи, в конце каждой строки будет добавляться байт контрольной суммы (или два), обычно рассчитываемый как простое 256 по модулю суммы всех значений в строка или более сложный CRC. Эта контрольная сумма будет использоваться, чтобы определить, правильно ли пользователи вошли в строку.

Различные форматы файлов шестнадцатеричного дампа, включая S-record, Intel HEX и Tektronix extended HEX, имеют одинаковое значение контрольной суммы. в конце каждого ряда.

Сжатие повторяющихся строк

В программах Unix od и hexdump не все строки вывода дисплея содержат те же данные, что и предыдущие. показаны строки; вместо этого отображается строка, содержащая только одну звездочку. Например, блок из всех нулей печатается как:

0000000 0000 0000 0000 0000 0000 0000 0000 0000 * 0000030

Эта функция сжатия делает полезный инструмент для проверки больших файлов или целых устройств для неровности. В современной системе Linux удобно сканировать весь жесткий диск, чтобы проверить, не все ли на нем пусто:

# hexdump / dev / sda (замените sda правильным имя сканируемого устройства)

Параметр -v заставляет hexdump и od явно отображать все входные данные:

0000000 0000 0000 0000 0000 0000 0000 0000 0000 0000010 0000 0000 0000 0000 0000 0000 0000 0000 0000020 0000 0000 0000 0000 0000 0000 0000 0000
od и hexdump

В системах Unix / POSIX / GNU: «Утилиты od и hexdump выводит восьмеричные, шестнадцатеричные или иным образом закодированные байты из файла или потока. В зависимости от типа вашей системы будут доступны одна или обе из этих двух утилит - ранее системы BSD не рекомендовали od для hexdump, системы GNU - наоборот. утилиты, однако, имеют одно и то же назначение, только немного разные переключатели ». Однако, начиная с POSIX в 2002 году, и FreeBSD, и GNU отменили это решение, и полностью поддерживаются od и hexdump.

DUMP, DDT и DEBUG

В 8-битной операционной системе CP / M, используемой на ранних персональных компьютерах, стандартная программа DUMP могла перечислить файл по 16 байт на строку с шестнадцатеричным смещением в начале строки и эквивалентом каждого байта в конце ASCII. Байты вне стандартного диапазона печатаемых символов ASCII (от 20 до 7E) будут отображаться как один период для визуального выравнивания. Этот же формат использовался для отображения памяти при вызове команды D в стандартном отладчике CP / M DDT . Более поздние воплощения формата (например, в отладчике DOS DEBUG ) изменили пространство между 8-м и 9-м байтами на тире без изменения общей ширины.

Это обозначение было сохранено в операционных системах, которые были прямо или косвенно производными от CP / M, включая DR-DOS, MS-DOS, OS / 2 и MS-Windows. В системах Linux команда hexcat также создает этот классический выходной формат. Основная причина создания этого формата заключается в том, что он умещает максимальный объем данных на стандартном 80-символьном экране или принтере, при этом его очень легко читать и просматривать визуально.

1234: 0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66 Википедия 1234: 00 10: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61 ree encyclopedia 1234 : 0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E что любой может 1234: 0030: 20 65 64 69 74 00 00 00 00 00 00 00 00 00 00 00 редактировать...........

Здесь крайний левый столбец представляет адрес, по которому расположены байты, представленные следующими столбцами. CP / M и различные системы DOS работали в реальном режиме на x86 CPU, где адреса состоят из двух частей (базы и смещения).

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

1234: 0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66 Википедия, ф 1234: 0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61 ree encyclopedia 1234: 0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E что любой может 1234: 0030: 20 65 64 69 74 редактировать

или

1234: 0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66 Википедия 1234: 0010: 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61 ree encyclopedia 1234: 0020: 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E что любой может 1234: 0030: 20 65 64 69 74 ** ** * * ** ** ** ** ** ** ** ** редактировать
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-23 10:54:55
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте