【问题标题】:Why are offsets in hex dump 10 more than previous?为什么十六进制转储中的偏移量比以前多 10?
【发布时间】:2019-09-29 18:52:47
【问题描述】:

我对这一切都不熟悉。我刚得到一个文件的十六进制转储,我很困惑。我想问为什么地址相差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. ...(.|

【问题讨论】:

    标签: hex reverse-engineering offset hexdump


    【解决方案1】:

    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
    

    【讨论】:

    • 我不明白为什么“10 的偏移量是 16 字节的偏移量”。 00000010 指向什么?出现在偏移量旁边的 16 个字节中每个字节的地址是什么?
    • 这些不是内存地址。这些是从文件开头的偏移量。
    • 0x0 = 0; 0x4 =4; 0x8 = 8; 0xc = 12; 0x10 = 16;您应该检查十六进制到十进制的转换以了解它们
    猜你喜欢
    • 1970-01-01
    • 2012-03-04
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    相关资源
    最近更新 更多