在 Linux 下,strings 是一个专门用于从二进制文件中提取可打印字符串的工具。它常和其他文本/二进制分析工具一起使用,但定位和用途不同。下面从功能、使用场景、与其他工具的区别几个方面说明。
strings 的主要作用是:
从一个文件(尤其是非文本文件,如可执行文件、core 文件、镜像)中,提取出“看起来像字符串”的连续可打印字符序列。
示例:
strings /bin/ls
可能输出:
Usage: %s [OPTION]... [FILE]...
ls
GNU coreutils
cat / less / more| 工具 | 用途 | 是否能看二进制 |
|---|---|---|
| cat | 直接输出文件内容 | 会显示乱码 |
| less | 分页查看文本 | 二进制会乱 |
| strings | 只提取可打印字符串 | ✅ 适合二进制 |
✅ 区别:
cat 会把整个文件原样输出,二进制中会夹杂大量不可读字符;
strings 只保留“像字符串”的部分。
grep| 工具 | 作用 |
|---|---|
| grep | 在文本中搜索匹配模式 |
| strings | 从二进制中提取文本 |
常见组合:
strings binary | grep password
✅ 区别:
grep 不懂二进制结构strings 先“翻译”出字符串,再交给 grephexdump / xxd| 工具 | 输出形式 |
|---|---|
| hexdump | 十六进制 + ASCII |
| xxd | 十六进制 |
| strings | 只输出字符串 |
示例(xxd):
0000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............
✅ 区别:
hexdump/xxd 看“字节级结构”strings 看“人类可读内容”objdump / readelf| 工具 | 用途 |
|---|---|
| objdump | 反汇编、查看节区 |
| readelf | ELF 结构分析 |
| strings | 提取字符串 |
✅ 区别:
objdump/readelf 是结构化分析工具strings 是非结构化文本提取工具示例:
readelf -p .rodata binary
比 strings 更精确,但只对 ELF 有效。
binutils 其他工具strings 本身属于 GNU binutils,和以下工具定位不同:
nm:符号表objcopy:复制/转换strip:去符号✅ strings 不涉及结构,只“扫文本”。
strings是“从二进制里找人话”的工具,简单粗暴但非常实用;
它和grep是搭档,和objdump/readelf是不同层级的分析工具。
如果你愿意,我也可以给你画一张工具选择决策图或对比表。