计算机科学

首页 > 计算机科学

十六进制转储

2018-09-03 09:46:36     所属分类:调试
一个318字节的图标的十六进制转储

在电脑运算领域,十六进制转储(英文:Hex dump)是指从内存或其他存储设备中调取的数据的十六进制视图(该视图被打印在屏幕上或者纸上)。在调试软件及进行反向工程时,操作者经常需要查阅十六进制转储。


在十六进制转储中,每个字节被两位十六进制数字代表。十六进制转储在显示时通常被排列成8或16字节的列,有时用空格隔开。一些十六进制转储工具在行首提供十六进制的内存地址,有些则在行尾提供检验值。

虽然十六进制转储的名称中包含“十六进制”,但是一些十六进制转储软件也提供八进制或者十进制的输出选项。常用的十六进制转储工具包括 hexdump、od、xxd,有时这些软件也会被简单地命名为 dump 或者 D。

目录

  • 1 例子
  • 2 校验和
  • 3 压缩的重复行
  • 4 参考资料
  • 5 外部链接

例子

一个程序十六进制转储的一部分(用 Unix 的 hexdump 工具生成):

 00105e0 e6b0 343b 9c74 0804 e7bc 0804 e7d5 0804
 00105f0 e7e4 0804 e6b0 0804 e7f0 0804 e7ff 0804
 0010600 e80b 0804 e81a 0804 e6b0 0804 e6b0 0804

上面的列子展示了十六进制转储的一种形式。但是十六进制转储不仅局限于如上形式,其字节序可以不同。以下的形式则仅在特定情形下使用:

 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 e80b0804e81a0804e6b00804e6b00804

Unix默认将两个字节并作一组现实。以下是在现代化的x86(小端序)计算机上通常的现实情况:

 00105e0 b0e6 0408 9ee7 0408 bce7 0408 d5e7 0408
 00105f0 e4e7 0408 b0e6 0408 f0e7 0408 ffe7 0408
 0010600 0be8 0408 1ae8 0408 b0e6 0408 b0e6 0408

通常,也会有额外的一列表显示出十六进制数字代表的ASCII码(例如 hexdump -Chd):

0000: 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66  , the 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   that anyone can
0030: 20 65 64 69 74 00 00 00 00 00 00 00 00 00 00 00   edit...........

校验和

当十六进制转储需要手动输入时,便会在每一行的末尾提供一位或两位校验和,一般用256模本行中所有数字之和,或者使用 CRC 值。这个校验和将用于确定用户的输入正确与否。

压缩的重复行

在Unix程序 odhexdump 中,并非所有行都会被列出。包含与上一行相同的内容的行将被略去,取而代之的是一个星号。例如,一块全是零的信息打印如下:

 0000000 0000 0000 0000 0000 0000 0000 0000 0000
 *
 0000030

这个特性可以使我们很方便地检测的大文件或存储设备的不规则情况。在现代 Linux 系统中,使用以下命令可以方便地扫描整个硬盘,以检查是否完全为空:

 # hexdump /dev/sda #(用需要扫描的设备的路径代替/dev/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

参考资料

外部链接

  • hexdump Linux in a Nutshell
  • 使用 Hexdump 组件的指南
  • 反向 Hex Dump 使用 xxd 命令
  • hdr 多功能的十六进制转储工具
  • Data::HexDump::Range 被 hdr 使用的模块。
  • hexd 另一种十六进制转储工具
  • RFC 4194 "The S Hexdump Format"
版权声明:本文由北城百科网创作,转载请联系管理获取授权,未经容许转载必究。https://www.beichengjiu.com/computerscience/340508.html

显示全文

取消

感谢您的支持,我会继续努力的!

扫码支持
支付宝扫一扫赏金或者微信支付5毛钱,阅读全文

打开微信扫一扫,即可进行阅读全文哦


下一篇:反汇编器
相关推荐