strings 是 Linux 下一个常用命令,用于从二进制文件、core 文件或内存镜像中提取可打印的字符串(通常是 ASCII/Unicode 文本)。分析 strings 输出,常用于逆向、取证、漏洞分析、排查程序行为等。
下面从基本用法 → 输出分析思路 → 实战技巧逐步说明。
strings binary_file
常见参数:
-n <num>:只显示长度 ≥ num 的字符串(默认 4)-a:扫描整个文件(不只是数据段)-e <encoding>:指定编码(如 s=7-bit, l=16-bit LE, b=16-bit BE)-t x / -t d:显示字符串在文件中的偏移(十六进制/十进制)-f:显示文件名示例:
strings -n 6 -a -t x ./malware.bin
典型内容:
/etc/passwd, /bin/sh)Permission denied, Usage: ...)AES, key, encrypt)快速过滤:
strings binary | grep -iE "http|ip|password|key|shell|exec|/bin/"
重点关注:
/bin/sh, system(, execvehttp://, 192.168, dnsRSA, AES, md5使用偏移:
strings -t x binary
输出示例:
0x1a34 /bin/sh
然后用:
objdump -d binary | less
# 或
gdb binary
查找 0x1a34 附近逻辑。
file binary
not stripped → 有大量符号,分析简单stripped → 只能靠字符串 + 反汇编从字符串反推:
重点看:
cron, rc.local)setuid, root)strings binary | grep -i "password"
配合:
grepxxdradare2 / IDAstrace / ltracestrings -e l binary
strings memory.dump | grep -i "secret"
如果你有具体文件类型(如 ELF、固件、恶意样本),或想看某个 strings 输出怎么解读,可以贴出来,我可以帮你逐条分析。