在 Linux 下,strings 是一个常用的命令行工具,用于从二进制文件(可执行文件、库文件、镜像、core dump 等)中提取可打印字符串。它常用于逆向分析、取证、排查依赖、查看版本信息等。
下面从 基本用法 → 常用参数 → 实战示例 → 分析技巧 逐步说明。
strings 文件名
例如:
strings /bin/ls
这会输出 ls 二进制中所有长度 ≥ 4 的可打印字符串。
strings -n 6 binary
只显示长度 ≥ 6 的字符串,减少噪声。
strings -a -t x binary
-a:扫描整个文件(不限于已加载段)-t x:以 十六进制 显示偏移-t d(十进制)、-t o(八进制)示例输出:
0x1a34 /lib64/ld-linux-x86-64.so.2
0x1a50 GLIBC_2.14
strings -e l binary
-e 指定字符编码:
s:7-bit ASCII(默认)S:8-bit ASCIIb:16-bit big-endianl:16-bit little-endianB / L:32-bitstrings binary | grep -i version
strings binary | grep -E "GLIBC|openssl|password"
strings /bin/ls | grep GLIBC
输出示例:
GLIBC_2.2.5
GLIBC_2.3
strings app | grep -i debug
常见字符串:
gcc version__FILE____LINE__assertstrings app | grep -E "https?://|([0-9]{1,3}\.){3}[0-9]{1,3}"
strings malware.bin | less
重点看:
/bin/sh, wget, curl)strings -a -t x binary | grep "password"
然后用:
objdump -s -j .rodata binary
或 gdb / radare2 定位对应逻辑。
| 工具 | 用途 |
|---|---|
objdump |
反汇编 |
readelf |
ELF 结构分析 |
nm |
符号表 |
radare2 / ghidra |
逆向工程 |
binwalk |
固件/打包分析 |
# 1. 基本信息
file unknown_bin
# 2. 提取字符串
strings -a -n 6 -t x unknown_bin > str.txt
# 3. 搜索关键字
grep -iE "url|password|version|exec" str.txt
# 4. 结合反汇编
objdump -d unknown_bin | less
如果你有具体场景(比如:
可以告诉我,我可以给你更针对性的 strings 用法和实战命令。