Почему смещения в шестнадцатеричном дампе на 10 больше, чем в предыдущем? - PullRequest
1 голос
/ 29 сентября 2019

Я новичок во всем этом. Я только что получил шестнадцатеричный дамп файла, и я запутался. Я хочу спросить, почему адреса отличаются на 10. После смещения есть только 8 байтов, но следующее смещение после 00000000 равно 00000010, а не 00000008.

00000000  7f 45 4c 46 01 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 03 00 01 00 00 00  30 84 04 08 34 00 00 00  |........0...4...|
00000020  ec 22 00 00 00 00 00 00  34 00 20 00 08 00 28 00  |."......4. ...(.|

1 Ответ

1 голос
/ 30 сентября 2019

00, 10 и 20 - смещение байтов в шестнадцатеричном формате. Таким образом, смещение «10» - это смещение 16 байтов.

xxd примеры

Вы можете указать количество байтов на строку с флагом xxd -c. Использование 16 имитирует поведение по умолчанию:

$ printf "The quick brown fox jumps over the lazy dog" | xxd -c 16
00000000: 5468 6520 7175 6963 6b20 6272 6f77 6e20  The quick brown
00000010: 666f 7820 6a75 6d70 7320 6f76 6572 2074  fox jumps over t
00000020: 6865 206c 617a 7920 646f 67              he lazy dog

Пример с 12

Использование смещения 12 вместо этого приводит к увеличению на 12 байтов (в шестнадцатеричном формате).

$ printf "The quick brown fox jumps over the lazy dog" | xxd -c 12
00000000: 5468 6520 7175 6963 6b20 6272  The quick br
0000000c: 6f77 6e20 666f 7820 6a75 6d70  own fox jump
00000018: 7320 6f76 6572 2074 6865 206c  s over the l
00000024: 617a 7920 646f 67              azy dog

Преобразовав смещения, мы получим ожидаемый результат:

0x0c = 12
0x18 = 24
0x24 = 36
...