strings 是 GNU binutils 中的工具,用于从二进制文件、数据文件或内存转储中提取可打印字符串(通常是 ASCII/Unicode 文本)。在 Debian/Ubuntu 上由 binutils 提供。
下面按常用程度详细讲解参数。
strings file
从 file 中提取长度 ≥ 4 的可打印字符串。
-n / --bytes=min-len最短字符串长度
strings -n 6 file
只显示长度 ≥ 6 的字符串。
-e / --encoding字符编码
| 参数 | 含义 |
|---|---|
-e s |
7-bit ASCII(默认) |
-e S |
8-bit ASCII |
-e b |
16-bit Big Endian |
-e l |
16-bit Little Endian |
-e B |
32-bit Big Endian |
-e L |
32-bit Little Endian |
示例(提取 UTF-16 LE 字符串):
strings -e l file.exe
-f / --print-file-name显示文件名
strings -f *.bin
输出格式:
file1.bin: string1
file2.bin: string2
-a / --all扫描整个文件(默认行为)
strings -a file
(老版本中用于强制扫描全部内容)
-t / --radix显示字符串偏移地址
| 参数 | 进制 |
|---|---|
-t o |
八进制 |
-t d |
十进制 |
-t x |
十六进制 |
strings -t x file
输出示例:
1a2f /lib/ld-linux.so.2
-T / --target指定目标文件格式
strings -T elf32-i386 file
一般自动识别,少见使用。
- (标准输入)cat file | strings
--help显示帮助
strings --help
-V / --version查看版本
strings -V
strings /bin/ls | grep "/"
strings -e l program.exe
strings -t x -n 8 binary | grep "password"
strings -f /usr/bin/* | grep "error"
grep 搭配技巧strings file | grep -i "version"
strings file | grep -E "http|ftp"
✅ 逆向分析
✅ 取证分析
✅ 查看硬编码密码/路径
✅ 分析无符号二进制
✅ 快速了解程序功能
如果你愿意,我也可以:
strings vs rabin2 / objdump直接告诉我你的使用场景即可。