strings
是 Linux 中一个用于提取二进制文件中可打印字符序列的实用工具,尤其适用于分析编译后的程序、核心转储文件或其他二进制数据。以下是关于 strings
命令处理二进制文件的详细说明:
strings
逐字节扫描二进制文件,寻找连续的 ASCII 或 Unicode 可打印字符(默认至少 4 个字符长度的序列)。-e
选项可指定编码(如 -e l
为 16 位 Little-Endian Unicode)。选项 | 作用 |
---|---|
-a |
扫描整个文件(默认可能只扫描特定段,如 ELF 的 .text 段)。 |
-n <长度> |
设置最小字符串长度(如 -n 8 只显示至少 8 个字符的序列)。 |
-t <格式> |
显示字符串偏移量(-t x 十六进制,-t d 十进制,-t o 八进制)。 |
-e <编码> |
指定编码(如 -e s 为 7-bit ASCII,-e l 为 16-bit Unicode)。 |
-f |
在输出中显示文件名(多文件时有用)。 |
strings /bin/ls | grep "usage"
strings core.dump | grep -i "error"
strings suspicious.bin | grep -E "http|ftp|.dll"
strings
默认可能只扫描代码段,使用 -a
强制全文件扫描。
bash
strings -a /usr/bin/ssh
xxd
/objdump
分析。
bash
objdump -s -j .rodata program.o | strings
-e
选项。head
/grep
过滤。grep
过滤:
bash
strings libexample.so | grep -A 5 "Version:"
bash
strings malware.bin | sort | uniq -c | sort -nr
bash
xxd -p file.bin | tr -d '\n' | grep -oP '....' | xxd -r -p | strings
通过灵活使用 strings
,可以高效地从二进制文件中提取人类可读的信息,辅助调试、逆向工程或安全分析。如需更复杂的二进制解析,可结合 objdump
、readelf
或 radare2
等工具。