strings 是 Linux/macOS 下常用的一个命令行工具,用来从一个文件(通常是二进制文件)中提取可打印的字符串,常用于逆向分析、排查程序、取证、调试等场景。
下面系统地介绍它的用法。
从文件里找出“看起来像字符串”的内容(通常是 ASCII / Unicode 字符)
默认会提取长度 ≥ 4 的可打印字符序列。
strings 文件名
strings a.out
输出类似:
/lib64/ld-linux-x86-64.so.2
GLIBC_2.2.5
Hello World
Usage: test [options]
-n)strings -n 6 test.bin
只显示 长度 ≥ 6 的字符串。
-t)strings -t x test.bin
strings -t d test.bin
输出示例:
0x1a3c /lib64/ld-linux-x86-64.so.2
-e 相关)| 参数 | 含义 |
|---|---|
-e l |
16-bit little-endian |
-e b |
16-bit big-endian |
-e L |
32-bit little-endian |
-e B |
32-bit big-endian |
strings -e l test.exe
strings -n 5 -t x test.bin | head
或结合 dd:
dd if=test.bin bs=1 skip=1024 count=4096 | strings
cat test.bin | strings
strings /bin/ls
常见内容:
strings app | grep -i password
strings app | grep -i token
⚠️ 注意:这只是辅助手段,不能替代安全审计。
strings unknown.bin
判断:
.so / .exe / 固件strings firmware.bin
strings program.exe
strings app | grep http
strings -t x app | grep "Hello"
less 查看strings app | less
❌ 不能反编译
❌ 不能还原变量名、函数名
❌ 不保证字符串一定有意义
它只是**“按规则提取可打印字符”**。
❌ strings 不是杀毒工具
❌ 不能提取被加密/压缩的字符串
❌ 不是所有字符串都能看到
strings= 从二进制文件中“挖”出人类可读的字符串
如果你愿意,我可以:
你想用在什么场景?