在 Debian(及一般 Linux 系统)中,strings 命令通常来自 binutils 包,用于从二进制文件(可执行文件、库、core dump 等)中提取可打印字符串。
下面是 strings 常见参数及说明(以 GNU strings 为主,Debian 默认即此实现):
-a / --all扫描整个文件,而不是只扫描可读段(默认可能只扫描某些段)。
strings -a /bin/ls
-n <长度> / --bytes=<长度>只显示长度 ≥ 指定值的字符串(默认通常是 4)。
strings -n 6 binaryfile
-f / --print-file-name在每行字符串前显示文件名。
strings -f /bin/*
-e <编码> / --encoding=<编码>指定字符编码:
s:7-bit ASCIIS:8-bit ASCIIb:16-bit Big Endianl:16-bit Little EndianB / L:32-bit示例:
strings -e l binaryfile
-t <格式> / --radix=<格式>在字符串前显示偏移量:
o:八进制x:十六进制d:十进制strings -t x binaryfile
-T <BFDNAME> / --target=<BFDNAME>指定目标文件格式(一般很少用,除非特殊架构)。
-- 或 -表示后面不再是参数(用于文件名以 - 开头)。
- (从标准输入读取)cat binary | strings -
--help显示帮助信息。
--version显示版本。
# 显示所有字符串
strings -a program
# 显示长度大于等于 8 的字符串
strings -n 8 program
# 显示字符串及其十六进制偏移
strings -t x -a program
# 扫描多个文件并显示文件名
strings -f /usr/bin/*
如果你愿意,我也可以:
strings 与 grep / xxd 的用途strings 在某些 Debian 版本中的行为差异你是用于 系统排查、逆向分析,还是 Debian 打包?