在 Linux 下,strings 是一个从二进制文件、core 文件、内存镜像等提取可打印字符串的工具,常用于排错、逆向、定位问题来源。下面按“场景 → 用法 → 排错思路”说明。
strings 能帮你排错什么?strings file
默认提取长度 ≥ 4 的可打印字符串。
strings -n 6 file # 最小长度 6
strings -a file # 扫描整个文件(不只数据段)
strings -e l file # 指定编码(l=16bit little endian)
strings -t x file # 显示字符串偏移(十六进制)
strings core
strings /proc/<pid>/mem
查找:
例如:
open failed: /etc/app.conf
segmentation fault in handler
strings app | grep -i "mysql"
strings app | grep "/etc"
可发现:
strings app | grep -E "http|ip|://"
常见发现:
http://192.168.1.10:8080
api.example.com
strings old_app > old.txt
strings new_app > new.txt
diff old.txt new.txt
快速发现:
strings core | less
结合:
file core
gdb app core
grepstrings -a binary | grep -i error
objdumpobjdump -s -j .rodata binary
strings -t x binary | grep "main"
再用:
nm binary | grep main
❌ 以为 strings 能看到变量值
✅ 只能看到静态字符串
❌ 认为能替代调试器
✅ 是辅助排错工具
程序异常
↓
有无日志?否
↓
strings 二进制 / core
↓
找路径 / IP / 错误
↓
定位代码或配置
如果你有具体报错、二进制类型或场景(如 Java / C / Go / core dump),我可以给你更针对性的 strings 用法。