strings 是 Linux 下常用的一个命令行工具,主要用途是从二进制文件或任意文件中提取可打印的字符串。
下面按常见用途系统说明一下它能查什么、适合什么场景、有什么局限。
strings 是什么?strings 会扫描文件(可执行文件、库、core dump、任意二进制文件等),把连续的可打印字符序列(ASCII/Unicode)输出出来。
典型用法:
strings filename
strings 能查什么?比如查看一个二进制程序中是否包含:
示例:
strings a.out
可能会看到:
Usage: ./a.out <filename>
/tmp/log.txt
https://example.com/api
✅ 常用于逆向分析、排查程序行为
比如检查是否泄露:
示例:
strings app | grep -i "password"
strings app | grep -E "http|https|api"
⚠️ 注意:strings 只能看到“明文存在的字符串”
对 ELF 文件(Linux 程序):
strings /lib/libc.so.6
可以看到:
strings core
用来:
在:
中查找可读字符串。
strings disk.img
比如:
strings image.jpg
strings 不能做什么?❌ 不能:
objdump、gdb、readelf例如:
char pwd[] = {'p','a','s','s','\0'};
如果写成这样,可能被识别,但如果被优化或加密,就看不到了。
strings [选项] 文件
常用选项:
| 选项 | 说明 |
|---|---|
-n 6 |
只显示长度 ≥ 6 的字符串(默认 4) |
-t x |
显示字符串在文件中的偏移(十六进制) |
-t d |
偏移(十进制) |
-e |
指定编码(如 UTF-16) |
-a |
扫描整个文件(默认) |
示例:
strings -n 6 -t x binary
| 工具 | 用途 |
|---|---|
strings |
快速提取字符串 |
objdump |
反汇编 |
readelf |
ELF 结构分析 |
nm |
查看符号表 |
grep |
文本搜索 |
xxd |
查看原始二进制 |
strings用来从二进制或任意文件中提取人类可读的字符串,适合快速查看程序内容、排查信息泄露、辅助逆向和安全分析,但不能替代真正的反汇编或调试工具。
如果你有具体场景(比如:
可以告诉我,我可以给你更针对性的用法和命令示例。