strings 是 Linux 下一个常用命令,用来从二进制文件(可执行文件、库、镜像、core dump 等)中提取可打印的字符串(通常是 ASCII 或 Unicode 文本)。
下面从「命令本身 → 输出内容 → 如何解读 → 实际用途」一步步说明。
strings file
作用:扫描文件,把连续可打印字符(默认长度 ≥ 4)打印出来。
示例:
strings /bin/ls
你可能会看到:
Usage: %s [OPTION]... [FILE]...
ls
GNU coreutils
%s: invalid option -- '%c'
...
| 类型 | 示例 | 说明 |
|---|---|---|
| 错误信息 | Segmentation fault |
程序可能崩溃 |
| 路径 | /etc/passwd |
可能访问的文件 |
| URL | http://example.com |
网络行为 |
| 函数名 | main, malloc |
编译未剥离符号 |
| 版本信息 | OpenSSL 1.1.1 |
依赖库版本 |
| 调试信息 | DEBUG: x=%d |
程序调试痕迹 |
strings -a -t x file
输出:
1f3c /lib64/ld-linux-x86-64.so.2
→ 字符串在文件中的十六进制偏移
常用于逆向 / 定位。
strings -n 8 file
只显示 ≥8 字符的字符串,减少噪音。
strings -e l file # 16-bit little endian
strings -e b file # 16-bit big endian
strings -a file
默认可能只扫描某些段,-a 扫整个文件。
strings binary | grep -i usage
strings binary | grep -E '/(etc|tmp|home|var)'
→ 文件访问倾向
strings binary | grep -E 'http|ftp|socket'
→ 网络行为
| 工具 | 用途 |
|---|---|
file |
文件类型 |
objdump |
反汇编 |
readelf |
ELF 结构 |
grep |
过滤信息 |
xxd |
查看偏移内容 |
strings malware | grep -iE 'wget|curl|base64|/bin/sh'
strings binary | grep -i version
strings binary | grep -iE 'password|passwd|secret'
⚠️ strings 不能:
✅ 它只是“文字线索”
如果你愿意,可以:
strings 输出我可以直接帮你逐行解读。