| xxd file > output.txt |
| hexdump -C file > output.txt |
| readelf -h file > output.txt |
xxd
xxd
用于创建给定文件或标准输入的十六进制转储,也可以将十六进制转储转换回其原始二进制形式。与 uuencode(1)
和 uudecode(1)
类似,它允许以 “邮件安全” 的ASCII表示形式传输二进制数据,但优势在于可以解码到标准输出。此外,它还可用于执行二进制文件修补。
参数 |
说明 |
-a, -autoskip |
切换自动跳过功能:用单个 * 替换全零行。默认关闭。 |
-b, -bits |
切换到二进制位转储,而不是十六进制转储。此选项将字节写为八个 “1” 和 “0” 组成的数字,而不是普通的十六进制转储。每行前面是十六进制的行号,后面是ASCII(或EBCDIC)表示。命令行开关 -p 、-i 在此模式下不起作用。 |
-c cols, -cols cols |
每行格式化 <cols> 个字节。默认值为16(-i 时为12,-ps 时为30,-b 时为6)。最大值为256。-ps 模式下无最大值。在 -ps 模式下,值为0会导致输出为一整行长字符串。 |
-C, -capitalize |
在使用 -i 时,以C语言头文件风格将变量名大写。 |
-E, -EBCDIC |
将右侧列中的字符编码从ASCII更改为EBCDIC。这不会改变十六进制表示。此选项与 -r 、-p 或 -i 组合使用时无意义。 |
-e |
切换到小端序十六进制转储。此选项将字节组视为小端序字节顺序的字。默认的4字节分组可使用 -g 更改。此选项仅适用于十六进制转储,不改变ASCII(或EBCDIC)表示。命令行开关 -r 、-p 、-i 在此模式下不起作用。 |
-g bytes, -groupsize bytes |
每 <bytes> 个字节(每个字节用两个十六进制字符或八个二进制位表示)的输出之间用空格分隔。指定 -g 0 可取消分组。正常模式下 <bytes> 默认值为2,小端序模式下为4,二进制位模式下为1。分组不适用于PostScript或头文件风格输出。 |
-h, -help |
打印可用命令的摘要并退出。不执行十六进制转储。 |
-i, -include |
以C语言头文件风格输出。除非 xxd 从标准输入读取,否则会写入一个完整的静态数组定义(数组名以输入文件名命名)。 |
-l len, -len len |
写入 <len> 个字节后停止。 |
-n name, -name name |
在使用 -i 时覆盖输出的变量名。数组名为 name ,长度名为 name_len 。 |
-o offset |
在显示的文件位置上加上 <offset> 。 |
-p, -ps, -postscript, -plain |
以PostScript连续十六进制转储风格输出,也称为纯十六进制转储风格。 |
-r, -revert |
反向操作:将十六进制转储转换(或修补)为二进制。如果不写入标准输出,xxd 会在不截断输出文件的情况下写入。使用 -r -p 组合可读取无行号信息且无特定列布局的纯十六进制转储。输入中任何位置允许有额外的空格和换行符。使用 -r -b 组合可读取二进制位转储而非十六进制转储。 |
-R when |
在输出中,根据十六进制值对十六进制值和字符值都进行相同的颜色标记,主要用于区分可打印和不可打印字符。when 取值为 never 、always 或 auto 。当设置了 $NO_COLOR 环境变量时,颜色标记功能将被禁用。 |
-seek offset |
在 -r 之后使用:在十六进制转储中找到的文件位置上加上 <offset> 后进行转换。 |
-s [+][-]seek |
从输入文件的 <seek> 字节绝对(或相对)偏移位置开始。+ 表示偏移相对于当前标准输入文件位置(不从标准输入读取时此符号无意义)。- 表示偏移从输入末尾开始计算(或与 + 组合使用时,表示从当前标准输入文件位置之前开始计算)。如果不使用 -s 选项,xxd 从当前文件位置开始。 |
-u |
使用大写十六进制字母。默认使用小写字母。 |
-v, -version |
显示版本字符串。 |
hexdump
hexdump
工具是一个过滤器,它能以用户指定的格式显示指定文件的内容;若未指定文件,则显示标准输入的内容。
参数 |
说明 |
-b, --one-byte-octal |
单字节八进制显示。每行以十六进制显示输入偏移量,后跟十六个用空格分隔、三位一列且用零填充的输入数据字节(以八进制表示)。 |
-c, --one-byte-char |
单字节字符显示。每行以十六进制显示输入偏移量,后跟十六个用空格分隔、三位一列且用空格填充的输入数据字符。 |
-C, --canonical |
标准十六进制+ASCII显示。每行以十六进制显示输入偏移量,后跟十六个用空格分隔、两位一列的十六进制字节,接着是同样的十六个字节,以 %_p 格式显示并包含在 ` |
-d, --two-bytes-decimal |
双字节十进制显示。每行以十六进制显示输入偏移量,后跟八个用空格分隔、五位一列、用零填充的双字节输入数据单元(以无符号十进制表示)。 |
-e, --format format_string |
指定用于显示数据的格式字符串。 |
-f, --format-file file |
指定一个文件,该文件包含一个或多个用换行符分隔的格式字符串。空行和第一个非空白字符是井号(# )的行将被忽略。 |
-L, --color[=when] |
接受输出的颜色设置。可选参数 when 可以是 auto (自动)、never (从不)或 always (总是)。如果省略 when 参数,则默认为 auto 。颜色显示可以被禁用;当前内置的默认设置可查看 --help 的输出。另请参阅下面的 “颜色” 小节和 “颜色” 部分。 |
-n, --length length |
仅处理长度为 length 字节的输入。 |
-o, --two-bytes-octal |
双字节八进制显示。每行以十六进制显示输入偏移量,后跟八个用空格分隔、六位一列、用零填充的双字节输入数据量(以八进制表示)。 |
-s, --skip offset |
从输入开头跳过 offset 字节。 |
-v, --no-squeezing |
-v 选项使 hexdump 显示所有输入数据。如果不使用 -v 选项,任何一组与前一组输出行(除了输入偏移量)完全相同的输出行,都将被替换为仅包含一个星号的行。 |
-x, --two-bytes-hex |
双字节十六进制显示。每行以十六进制显示输入偏移量,后跟八个用空格分隔、四位一列、用零填充的双字节输入数据量(以十六进制表示)。 |
-h, --help |
显示帮助文本并退出。 |
-V, --version |
输出版本信息并退出。 |
readelf
readelf
用于展示一个或多个ELF(Executable and Linkable Format)格式目标文件的相关信息。借助各种选项,用户能够灵活控制具体要展示的信息内容。它不仅支持32位和64位的ELF文件,还能处理包含ELF文件的归档文件。该程序和objdump
功能类似,但readelf
提供的信息更为详尽,并且它独立于BFD(Binary File Descriptor)库运行。这意味着如果BFD库出现问题,readelf
的正常工作不会受到影响。
参数 |
说明 |
-a, --all |
等同于同时指定--file-header 、--program-headers 、--sections 、--symbols 、--relocs 、--dynamic 、--notes 、--version-info 、--arch-specific 、--unwind 、--section-groups 和--histogram 这些参数。不过要注意,此选项不会自动启用--use-dynamic 。所以,若命令行中未明确给出--use-dynamic 参数,那么动态符号和动态重定位信息将不会展示出来 |
-h, --file-header |
用于展示文件起始位置ELF头中所包含的信息 |
-l, --program-headers, --segments |
若文件存在段头,该参数可展示其相关信息 |
-S, --sections, --section-headers |
用于展示文件节头的信息(前提是文件存在节头) |
-s, --symbols, --syms |
若文件有符号表节,此参数会展示其中的条目。若符号关联了版本信息,也会一并展示。版本字符串会以符号名后缀的形式呈现,前面加上@ 字符,比如foo@VER_1 。要是该版本是解析未版本化符号引用时的默认版本,后缀前则加两个@ 字符,即foo@@VER_2 |
-e, --headers |
可以展示文件中的所有头信息,效果等同于同时使用-h -l -S 这三个参数 |
-n, --notes |
若文件包含NOTE段和(或)节,使用此参数可展示其内容 |
-r, --relocs |
用于展示文件重定位节的内容(若文件存在该节) |
-u, --unwind |
用于展示文件展开节的内容(仅支持IA64 ELF文件的展开节以及ARM展开表,即.ARM.exidx 和.ARM.extab )。如果针对您的架构尚未实现支持,可尝试利用--debug-dump=frames 或--debug-dump=frames-interp 参数来转储.eh_frames 节的内容 |
-d, --dynamic |
若文件存在动态节,使用此参数可展示其内容 |
-V, --version-info |
用于展示文件中版本节的内容(若存在版本节) |
-A, --arch-specific |
若文件包含特定于架构的信息,此参数可将其展示出来 |
-x , --hex-dump= |
把指定的节内容以十六进制字节形式展示。其中,数字代表节表中的索引,用于指定特定的节;而其他字符串则会匹配目标文件中所有具有该名称的节 |
-p , --string-dump= |
将指定节的内容展示为可打印字符串。同样,数字通过节表索引指定节,其他字符串匹配同名节 |
-w, --debug-dump |
用于展示文件中DWARF调试节的内容(若存在)。压缩的调试节在展示前会自动临时解压缩。在--debug-dump 后添加不同的字母或单词,可指定展示特定类型的调试信息,如=info 展示.debug_info 节内容、=abbrev 展示.debug_abbrev 节内容等 |
-v, --version |
用于展示readelf 的版本号 |
-W, --wide |
默认情况下,readelf 会对64位ELF文件的节头和段列表行进行换行处理,以适配80列的显示宽度。使用此参数后,readelf 会在单行中打印每个节头或每个段,在宽度超过80列的终端上查看时可读性更高 |
-H, --help |
用于展示readelf 可识别的命令行选项 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升