在 Linux 里,strings 命令用来从一个二进制文件(或任意文件)中提取可打印的字符串,常用于分析程序、排查日志、逆向、取证等。
下面从基本用法 → 常用参数 → 实战示例给你讲清楚。
strings 文件名
例如:
strings a.out
会把 a.out 里所有长度 ≥ 4 的可打印字符串打印出来。
strings -n 6 文件名
只显示 长度 ≥ 6 的字符串(默认是 4)
strings -n 4 -t x 文件名
-t x:以 十六进制 显示偏移
其他:
-t d:十进制-t o:八进制示例:
strings -t x a.out
输出:
1a3f /lib64/ld-linux-x86-64.so.2
1a5b main
strings a.out | grep password
或:
strings -n 6 a.out | grep -i error
strings -e l 文件名
-e s:7-bit-e b:16-bit BE-e l:16-bit LE-e B:32-bit BE-e L:32-bit LE一般默认即可,逆向时才用。
strings file1 file2 file3
或从目录:
strings /usr/bin/*
strings login | grep -i pass
strings -t x binary | grep "TODO"
然后用:
objdump -s -j .rodata binary
配合分析
strings unknown_bin | less
strings core | grep -i segfault
❌ strings 看不到加密/压缩内容
✅ 只显示“明文可打印字符”
❌ 不能反编译 ✅ 只是“粗看”
strings -n 6 binary | grep -E "http|key|token|pass"
或:
strings -t x binary | grep -i debug
如果你愿意,可以告诉我:
我可以直接给你针对性命令。