在 Debian(及其他 Linux 发行版)中,strings 是一个常用工具,用于从二进制文件、库文件或任意数据文件中提取可打印字符串。下面从「基本用法 → 输出含义 → 实际解析方法 → 常见场景」系统说明。
strings <文件>
它会扫描文件中的连续可打印字符序列(默认长度 ≥ 4),常用于:
strings /bin/ls
输出类似:
Usage: %s [OPTION]... [FILE]...
%s: invalid option -- '%c'
/lib64/ld-linux-x86-64.so.2
GNU
...
每一行就是一个“字符串”。
-n 控制最小长度strings -n 6 binary
strings -t x binary
输出示例:
1a2b3c Usage: %s [OPTION]
1a2b50 /etc/passwd
1a2b3c 是十六进制偏移objdump、gdb 定位代码位置strings -e l binary # 16-bit little endian
strings -e b binary # 16-bit big endian
适用于:
strings binary | grep -i error
strings binary | grep -E "https?://"
strings binary | grep "/etc/"
常见关注点:
file / readelf 联合分析file binary
readelf -h binary
判断:
dpkg-deb -x package.deb ./out
strings ./out/usr/bin/xxx
常用于:
如需深入:
objdump -d binary
gdb binary
radare2 / ghidra
| 误区 | 正确认知 |
|---|---|
| strings = 源码 | ❌ 只是文本碎片 |
| 所有字符串都有用 | ❌ 大量是编译器噪音 |
| strings 能解密 | ❌ 只能看明文 |
strings -n 6 -t x binary | grep -i "password\|token\|key"
如果你有具体文件类型(如 .deb、内核模块、Go 二进制),或想做逆向/安全分析,可以告诉我,我可以给你更针对性的解析方法。