strings 是 Debian / Linux 中一个非常常用的命令行工具,用来从一个二进制文件(或任意文件)中提取可打印的字符串。它常用于分析程序、排查问题、逆向工程等。
下面从 安装、基本用法、常用参数、示例 几个方面说明。
在 Debian / Ubuntu 上,strings 属于 binutils 包:
sudo apt update
sudo apt install binutils
安装后可直接使用:
strings --version
strings 文件名
示例:
strings /bin/ls
作用:列出 /bin/ls 中所有长度 ≥ 4 的可打印字符串。
默认最小长度是 4,可以用 -n 修改:
strings -n 6 文件名
示例(只显示长度 ≥ 8 的字符串):
strings -n 8 program
strings -t x 文件名 # 十六进制
strings -t d 文件名 # 十进制
示例:
strings -t x /bin/ls
输出示例:
1f3c usage: %s
1f50 invalid option
strings -e l 文件名 # 16-bit little endian
strings -e B 文件名 # 32-bit big endian
常见编码选项:
s:7-bit ASCII(默认)S:8-bitb:16-bitl:32-bit littleB:32-bit bigcat binary_file | strings
或结合其他命令:
objdump -s binary | strings
strings program | grep "/etc/"
strings program | grep -i version
file unknown_file
strings unknown_file | less
strings program | sort | uniq
❌ strings 不能反编译
✅ 它只是“提取文本”
❌ 不一定能看到所有逻辑
✅ 只能看到“写死在文件里的字符串”
如果你有具体使用场景(比如分析某个程序、CTF、排查 bug、提取配置),可以告诉我,我可以给你更针对性的命令示例。