在 Linux 下,strings 是一个非常实用的命令,用来从二进制文件(可执行文件、库、core dump 等)中提取可打印的字符串,常用于逆向分析、排查问题、安全审计等场景。
下面从用法 → 实战排查思路 → 常见技巧给你一个系统性的说明。
strings <二进制文件>
示例:
strings /bin/ls
默认会输出长度 ≥ 4 的可打印字符序列。
strings -n 6 file # 只显示长度 ≥ 6 的字符串
strings -a file # 扫描整个文件(包括数据段)
strings -e l file # 指定编码(l=16-bit little endian)
strings -t x file # 显示字符串在文件中的偏移(十六进制)
strings binary | less
重点看:
例如:
Usage: mytool [options]
https://example.com/api
Segmentation fault
strings binary | grep -E "http|ftp|ip|socket|connect"
常见线索:
http://127.0.0.1/var/log/xxxPOST /apistrings binary | grep -iE "password|token|secret|key"
⚠️ 注意:
strings binary | head
如果:
UPX可能是加壳:
strings binary | grep -i upx
strings binary | grep -i "error\|fail\|assert"
结合 core dump:
strings core | less
strings -t x binary
输出示例:
1a2b3c main
1a2b50 usage_error
再用:
objdump -d binary | less
或:
gdb binary
| 工具 | 用途 |
|---|---|
file |
判断文件类型 |
nm |
查看符号表 |
objdump |
反汇编 |
readelf |
ELF 结构分析 |
ldd |
查看依赖库 |
strace |
运行时系统调用 |
ltrace |
库函数调用 |
示例组合:
file binary
strings binary | grep error
strace ./binary
✅ 先看文件类型
✅ 用 strings 快速扫一遍
✅ 抓关键词(url / error / path)
✅ 有嫌疑再用 objdump / gdb
✅ 运行时用 strace 验证
如果你有具体二进制(比如“为什么程序启动就退出”“怀疑有后门”),可以把现象或 strings 输出贴出来,我可以帮你具体分析。