在 Ubuntu(或一般 Linux)中,strings 命令用于从一个二进制文件或数据文件中提取可打印的字符串(通常是 ASCII 或 Unicode 文本)。这在分析程序、排查问题、逆向工程或安全审计时很常用。
下面从基本用法 → 输出含义 → 如何解读 → 实战示例逐步说明。
strings 是做什么的?strings /bin/ls
作用:
ls 二进制文件strings 输出结果怎么看?Usage: ls [OPTION]... [FILE]...
GNU coreutils
%s: invalid option -- '%c'
cannot access %s
这些通常是:
%s, %d)| 类型 | 示例 | 含义 |
|---|---|---|
| 帮助信息 | Usage: xxx |
命令行参数说明 |
| 错误信息 | Permission denied |
程序运行失败原因 |
| 文件路径 | /etc/passwd |
程序可能访问的位置 |
| URL | http://example.com |
网络行为线索 |
| 函数名 | main, printf |
调试符号(若有) |
| 版本信息 | version 1.2.3 |
软件版本 |
strings -n 8 binary
只显示 长度 ≥ 8 的字符串,减少噪音。
strings -t x binary
输出示例:
1a2b3c Usage: ls [OPTION]...
1a2b3c 是十六进制偏移gdb / objdumpstrings -e l binary # 16-bit little endian
strings -e b binary # 16-bit big endian
objdump)strings -a binary
扫描整个文件(不只是数据段)
strings unknown_bin | grep -i "usage\|error\|http"
→ 看是否有网络、配置、命令参数
strings malware | grep -i "socket\|exec\|/bin/sh"
常见危险信号:
/bin/shsystem(wget, curlssh, passwordstrings binary | grep -i "version\|glibc"
strings -t x binary > strings.txt
再用:
objdump -d binary
对照地址,理解代码逻辑。
❌ 不包含:
✅ 适合:
strings -n 6 -t x /usr/bin/whoami
可能看到:
1020 getuid
1030 getpwuid
1040 unknown user
解读:
getuid → 获取当前用户getpwuid → 转换为用户名unknown user
strings是“看程序在说什么”,而不是“程序在做什么”。
如果你有具体某个 strings 输出片段,可以直接贴出来,我可以帮你逐行解读。