在 Ubuntu(或其他 Linux 系统)中,strings 命令用于从二进制文件、core 文件或内存镜像中提取可打印的字符串。分析 strings 结果,通常是为了逆向分析、取证、排查问题或了解程序行为。下面从基本用法 → 结果分析思路 → 实战技巧三个方面说明。
strings 基本用法strings /path/to/binary
示例:
strings /bin/ls
strings -n 6 file # 只显示长度 ≥6 的字符串
strings -a file # 扫描整个文件(包括非文本段)
strings -e l file # 指定编码(l=16-bit little endian)
strings -t x file # 显示字符串的文件偏移(十六进制)
重点关注以下几类字符串:
/etc/passwd
/var/log/syslog
/home/user/.ssh/
→ 可判断程序是否访问敏感文件
system
execve
/bin/sh
→ 可能涉及命令执行
http://evil.com
192.168.1.10
api.telegram.org
→ 网络行为、后门、C2 通信
Failed to open file
Segmentation fault
Authentication failed
→ 推断程序逻辑
AES
RSA
base64
password
→ 安全相关功能
strings -t x binary
示例输出:
0x1a3f /etc/shadow
0x1c20 password=
然后用:
objdump -s -j .rodata binary
或:
gdb binary
定位该字符串在代码中的使用位置。
strings binary | grep -i "http"
strings binary | grep -E "password|token|key"
strings binary | grep -i "ssh"
strings suspicious.bin | grep -iE "wget|curl|/bin/sh|base64"
常见恶意特征:
strings app | grep -iE "config|login|error"
→ 推测配置项、用户交互逻辑
有些程序把:
打包进二进制,可用 strings 初步发现。
strings crackme | less
常见线索:
flag{...}| 工具 | 用途 |
|---|---|
file |
判断文件类型 |
objdump |
反汇编 |
nm |
查看符号表 |
readelf |
ELF 结构分析 |
binwalk |
提取嵌入文件 |
radare2 / ghidra |
深度逆向 |
strings 不能证明行为,只能提供线索如果你有具体的 strings 输出内容或某个二进制文件场景(比如恶意样本、CTF、驱动、服务程序),可以直接贴出来,我可以帮你逐条分析。