在 Ubuntu(及其他 Linux 发行版)中,strings 命令用于从二进制文件(如可执行文件、库文件等)中提取可打印的字符串。它通常来自 binutils 包。
下面是 常见 strings 参数(选项)说明:
strings [选项] 文件...
-n / --bytes=min-len只显示长度至少为 min-len 的字符串(默认通常是 4)。
strings -n 6 file.bin
-a / --all扫描整个文件,而不是只扫描可加载段(默认行为可能只扫某些段)。
strings -a file.bin
-e encoding / --encoding=encoding指定字符编码:
s:7-bit 字符串S:8-bit 字符串(默认)b:16-bit 小端B:16-bit 大端l:32-bit 小端L:32-bit 大端strings -e l file.bin
-f / --print-file-name在每个字符串前显示文件名。
strings -f *.so
-o / --addresses显示字符串在文件中的偏移地址(八进制)。
strings -o file.bin
-t radix / --radix=radix显示字符串地址,进制可选:
o:八进制d:十进制x:十六进制strings -t x file.bin
-T bfdname / --target=bfdname指定目标文件格式(一般不常用)。
strings -T elf32-i386 file.bin
--help显示帮助信息。
strings --help
--version显示版本信息。
strings --version
# 提取长度 ≥ 8 的字符串
strings -n 8 program
# 显示字符串及其文件偏移(十六进制)
strings -t x program
# 扫描整个文件并显示文件名
strings -af program
# 提取 UTF-16 LE 字符串
strings -e l program
如果你愿意,我也可以:
strings 和 grep / xxdstrings 在 CTF / 逆向分析 中的用法