strings 是 Linux 下一个从二进制文件或数据中提取可打印字符串的命令,常用于分析程序、排查问题、逆向或取证。下面从基本用法到常见场景给你一个完整说明。
strings 会扫描文件(如可执行文件、core dump、内存镜像等),提取长度大于等于指定值的可打印字符序列(默认是 4 个字符)。
strings [选项] 文件...
strings a.out
从 a.out 中提取所有可打印字符串。
strings -n 6 a.out
只显示 长度 ≥ 6 的字符串(默认是 4)。
strings -t x a.out
以 十六进制 显示偏移:
4f3 /lib64/ld-linux-x86-64.so.2
也可以用:
-t o 八进制-t d 十进制strings file1 file2
cat a.out | strings
strings -e l a.out
常见编码选项:
-e s:7 位 ASCII(默认)-e l:16 位小端-e b:16 位大端-e B:32 位大端-e L:32 位小端strings /bin/ls
常用于:
strings app | grep -i password
strings app | grep -i token
strings core.1234
strings a.out | grep '\.so'
strings a.out | grep -E 'http|https'
A-Z a-z 0-9 / . - _ 等⚠️ 注意:
| 命令 | 作用 |
|---|---|
| strings | 提取可打印字符串 |
| hexdump | 查看原始十六进制 |
| objdump | 反汇编、查看 ELF 结构 |
❌ 对文本文件用 strings(没意义)
strings text.txt
❌ 想用 strings 找函数名(不一定有)
只显示前 20 行:
strings a.out | head -n 20
输出到文件:
strings a.out > strings.txt
如果你愿意,我可以:
你现在是在 调试程序 / 逆向 / 安全分析 / 日常排查 哪种场景?