strings 是 Linux 下一个非常实用的命令,用来从二进制文件、可执行文件、core dump、设备文件等中提取可打印的字符串。下面从「基础用法 → 常用技巧 → 实战场景」给你讲清楚,怎么用才“好用”。
strings file
从 file 中提取所有长度 ≥ 4 的可打印字符串(默认最小长度 4)。
示例:
strings /bin/ls
-nstrings -n 6 binary
⚠️ 默认是 4,太小容易噪音多;分析二进制时常用 6~8
-tstrings -t x binary # 十六进制
strings -t d binary # 十进制
strings -t o binary # 八进制
示例:
strings -t x /bin/ls
输出类似:
1f3c /lib64/ld-linux-x86-64.so.2
✅ 常用于 逆向 / 定位字符串位置
dd 或 objdump)strings -n 8 -t x binary | grep password
-estrings -e s binary # 7-bit ASCII(默认)
strings -e b binary # 16-bit Big Endian
strings -e l binary # 16-bit Little Endian
strings -e B binary # 32-bit Big Endian
strings -e L binary # 32-bit Little Endian
✅ 分析 UTF-16 / Windows 程序 很有用
cat binary | strings
或配合管道:
xxd binary | strings
strings /usr/bin/nginx | less
常用于:
strings -n 6 -t x challenge | grep -i flag
或:
strings challenge | grep -E "password|user|admin"
strings core | less
快速看:
strings app | grep -iE "token|secret|password"
⚠️ 安全性审查非常有用
file unknown.bin
strings unknown.bin
grepstrings binary | grep -C 2 "main"
objdumpobjdump -s -j .rodata binary | strings
findfind . -type f -exec strings {} \; | grep "TODO"
❌ 默认长度太短 → 噪音多
✅ 用 -n 6 或更大
❌ 字符串被编码(UTF-16)看不到
✅ 用 -e l / -e b
❌ 动态生成的字符串看不到
✅ strings 只能看静态字符串
strings = 快速窥探二进制内部文本的“万能放大镜”
如果你愿意,可以告诉我:
我可以给你更针对性的用法示例。