在 Ubuntu 中,strings 是 binutils 套件中的命令行工具,用于从二进制文件(如可执行文件、库、目标文件)中提取可打印字符串,帮助开发者快速洞察程序内容而无需源码。它支持设置最小长度、指定输出格式、选择字符编码、从指定偏移提取等,常与 grep、awk、sed 等文本处理工具组合,用于排查、分析与自动化流程。典型能力包括:
| 场景 | 命令示例 | 作用与要点 |
|---|---|---|
| 快速探查可执行文件 | strings /path/to/app |
列出可打印字符串,初步了解程序功能与依赖线索 |
| 精准筛选关键字 | `strings /path/to/app | grep -i “error|config|http”` |
| 设置最小长度与显示偏移 | `strings -n 6 -t x /path/to/app | head` |
| 检查链接库线索 | `strings /path/to/app | grep -i “.so|.dll|glibc”` |
| 分析核心转储 | `strings core.1234 | grep -i “exception|abort”` |
| 目标文件与库也适用 | strings libtest.a 或 strings libtest.so |
对 .o/.a/.so 同样有效,便于组件级分析 |
| 结合其他工具深入分析 | `strings app | grep -i “api_key” |
| 上述用法覆盖日常开发中对二进制的快速“肉眼”探查、问题定位与证据收集。 |
-e 指定正确编码;对非常规编码需谨慎解读结果。sudo apt-get update && sudo apt-get install binutils;在 RHEL/CentOS 上执行 sudo yum install binutils。strings /path/to/binary > strings.txtgrep -i "keyword" strings.txtstrings -n 8 -t x binary | grep "keyword"(长度≥8,显示十六进制偏移)objdump/readelf 做符号与依赖验证,必要时再用 strace/ltrace 动态跟踪