strings 是 Linux/Unix 系统中一个常用的命令行工具,通常属于 binutils 软件包。它的主要作用是:从一个二进制文件(或任意文件)中提取出可打印的字符串(printable character sequences)。
程序、库文件、镜像等二进制文件中,除了机器码,往往还包含一些人类可读的文本,比如:
strings 命令会扫描文件,把长度达到一定阈值的连续可打印字符输出出来。
strings [选项] 文件...
strings example.bin
| 选项 | 说明 |
|---|---|
-n <长度> |
只显示长度 ≥ 指定值的字符串(默认通常是 4) |
-a |
扫描整个文件(不只数据段) |
-f |
显示文件名 |
-e <编码> |
指定字符编码(如 s=7-bit, l=16-bit little endian) |
-t <格式> |
显示字符串在文件中的偏移(如 x=十六进制) |
# 显示长度至少为 6 的字符串
strings -n 6 program
# 显示字符串及其文件偏移(十六进制)
strings -t x program
# 扫描整个文件
strings -a program
strings /bin/ls | grep "usage"
strings unknown_file
strings libexample.so | grep version
strings 只能提取文本,不能还原逻辑如果你愿意,我也可以:
strings 和 grep / hexdump你想往哪个方向了解?