在Linux中可使用hexdump、xxd或od命令查看二进制文件的十六进制和ASCII内容,objdump工具可分析可执行文件结构。
命令行工具
hexdump
– 十六进制转储
- 功能:以十六进制和ASCII格式显示文件内容。
- 常用命令:
hexdump -C 文件名 # -C 显示十六进制和对应ASCII字符
- 示例输出:
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............| 00000010 02 00 3e 00 01 00 00 00 a0 10 40 00 00 00 00 00 |..>.......@.....|
- 高级选项:
-s 偏移量
:跳过指定字节(如-s 0x100
)。-n 长度
:限制显示字节数(如-n 512
)。
xxd
– 生成十六进制转储
- 功能:类似
hexdump
,但支持反向转换(将十六进制转回二进制)。 - 常用命令:
xxd 文件名 # 默认十六进制格式 xxd -b 文件名 # 显示二进制格式(0和1)
- 反向转换:
xxd -r 十六进制文件.txt > 新二进制文件
od
– 多格式转储
- 功能:支持十进制、八进制、十六进制等多种格式。
- 常用命令:
od -t x1 -A x 文件名 # x1=单字节十六进制, A x=用十六进制显示偏移量 od -t a 文件名 # 仅显示ASCII字符
objdump
– 分析可执行文件
- 功能:反汇编代码、查看节区(section)信息。
- 常用命令:
objdump -d 文件名 # 反汇编代码段 objdump -h 文件名 # 显示文件头部和节区信息 objdump -s -j .data 文件名 # 查看.data节内容
strings
– 提取文本字符串
- 功能:扫描二进制文件中的可打印字符串。
- 常用命令:
strings 文件名 # 默认显示长度≥4的字符串 strings -n 10 文件名 # 显示长度≥10的字符串
gdb
– 调试器查看内存
- 功能:动态调试时查看内存或寄存器。
- 步骤:
gdb ./可执行文件 (gdb) x/16xb 内存地址 # 查看16字节的十六进制内容 (gdb) disas 函数名 # 反汇编特定函数
图形化工具
Bless
– 十六进制编辑器
- 安装:
sudo apt install bless # Debian/Ubuntu
- 功能:可视化编辑、支持多字节格式解析、搜索/替换。
- 使用:
bless 文件名
GHex
– GNOME环境编辑器
- 安装:
sudo apt install ghex # Debian/Ubuntu
- 特点:双面板显示(十六进制+ASCII),适合基础分析。
安全注意事项
- 谨慎操作:修改二进制文件可能导致程序崩溃或系统不稳定。
- 权限控制:使用普通用户权限查看,避免
sudo
执行高风险操作。 - 恶意文件防护:未知来源的二进制文件需用杀毒软件(如
ClamAV
)扫描:sudo apt install clamav && clamscan 文件名
方法选择建议
场景 | 推荐工具 |
---|---|
快速查看内容 | hexdump -C 或 xxd |
反汇编分析代码 | objdump -d |
提取隐藏字符串 | strings |
可视化编辑 | Bless |
动态调试 | gdb |
Linux提供了丰富的二进制分析工具链:
- 命令行工具适合自动化或服务器环境(如
hexdump
、objdump
)。 - 图形工具(如
Bless
)适合交互式深度分析。 - 安全性和权限管理是操作前提,尤其处理外部文件时。
引用说明参考Linux手册页(
man
命令)、GNU Binutils官方文档及开源社区最佳实践,工具用法经Ubuntu 22.04 LTS和CentOS 7环境实测验证。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/29307.html