在 Linux 下分析二进制文件时,strings 是一个非常常用的工具,用来提取二进制中的可打印字符串,从而快速了解程序用途、依赖、路径、配置、加密特征等。
下面从 基本用法 → 实用技巧 → 配合其他工具 → 实战示例 给你系统讲一遍。
strings binary_file
提取所有长度 ≥ 4 的可打印字符串(默认最小长度 4)。
strings -n 6 binary_file
只显示长度 ≥ 6 的字符串,减少噪声。
strings -t x binary_file # 十六进制偏移
strings -t d binary_file # 十进制偏移
常用于配合 objdump、gdb 定位。
strings binary | grep -i "http"
strings binary | grep -i "/etc/"
strings binary | grep -i "password"
strings binary | grep -i ".so"
快速看动态库名(不如 ldd 准确,但很直观)。
strings binary | grep -i "python"
strings binary | grep -i "go1."
strings binary | grep -i "rust"
strings binary | sort | uniq -c | sort -nr | head
strings -n 6 binary | grep -i "error\|fail\|debug" | less
file binary
strings binary
strings -t x binary | grep "main"
objdump -d binary | less
strings -t x binary
xxd binary | grep "偏移地址"
file unknown_bin
strings -n 6 unknown_bin | less
你可能看到:
/lib64/ld-linux-x86-64.so.2Usage: %s <ip> <port>secret_key=→ 基本可以判断这是一个网络工具。
strings crackme | grep -i "flag"
strings crackme | grep -i "correct\|wrong"
strings malware | grep -i "wget\|curl\|/tmp/\|base64"
❌ 不能:
✅ 适合:
| 工具 | 用途 |
|---|---|
rabin2 |
更结构化 |
binwalk |
固件 / 嵌入文件 |
strings + grep |
快速分析 |
Ghidra / IDA |
真正逆向 |
如果你愿意,可以:
我可以直接给你一套针对性的 strings 分析命令。