strings 是 Linux 下一个常用命令,用来从二进制文件(可执行文件、库文件、core dump、固件等)中提取可打印的字符串(通常是 ASCII 或 Unicode 文本)。下面从“怎么看结果”和“怎么用结果”两个角度说明。
strings /bin/ls
输出示例:
Usage: %s [OPTION]... [FILE]...
ls
GNU coreutils
%s: invalid option -- '%c'
...
这些是从二进制文件中连续可打印字符序列中提取出来的内容,包括:
优先关注:
error, failed, invalid)/etc/, /var/log)例如:
/etc/passwd
http://example.com/api
CONFIG_FILE
这通常能告诉你程序会访问什么资源。
如果是未 strip 的二进制:
main
parse_config
connect_server
可帮助判断:
常见于:
例如:
password=123456
Authorization: Bearer xxxx
⚠️ 这是安全审计重点。
如果 strings 输出很少,只有:
UPX
可能说明:
可用:
file binary
strings binary | head
strings 只是第一步,通常配合:
| 工具 | 用途 |
|---|---|
file |
判断文件类型 |
objdump |
反汇编 |
nm |
查看符号 |
grep |
过滤关键字 |
ltrace/strace |
运行时行为 |
例如:
strings binary | grep -i password
strings binary | grep http
strings -n 6 binary # 只显示长度≥6的字符串
strings -e l binary # 16-bit little endian
strings -e b binary # 16-bit big endian
strings -t x binary # 显示字符串在文件中的偏移
偏移很有用,比如:
1024 /etc/shadow
可以用十六进制编辑器定位。
如果你有具体的 strings 输出内容或某个二进制文件,可以直接贴出来,我可以帮你逐行解读。