温馨提示×

如何用linux strings

小樊
34
2026-07-18 11:15:44
栏目: 智能运维

strings 是 Linux 下一个从二进制文件或数据中提取可打印字符串的工具,常用于分析程序、调试、逆向、取证等场景。下面从基本用法到常见实战给你一个完整说明。


一、strings 是什么?

strings 会扫描文件,把长度大于等于一定值的可打印字符序列输出出来,常用于:

  • 查看二进制中嵌入的字符串(如路径、URL、提示信息)
  • 分析 ELF / 可执行文件
  • 取证分析
  • 调试程序

二、基本语法

strings [选项] 文件...

示例:

strings a.out

三、常用选项(重点)

1️⃣ 指定最小字符串长度(-n

默认是 4,可以改:

strings -n 6 a.out

2️⃣ 输出字符串在文件中的偏移(-t

非常有用,用于定位字符串位置。

以十六进制显示偏移

strings -t x a.out

以十进制显示偏移

strings -t d a.out

示例输出:

8048540 /usr/lib/libc.so.6

3️⃣ 只扫描特定段(ELF 很有用)

strings -e l a.out

常见编码:

  • s:7-bit ASCII(默认)
  • S:8-bit
  • l:16-bit little-endian
  • b:16-bit big-endian
  • L:32-bit
  • B:64-bit

4️⃣ 显示文件名(-f

多个文件时很有用:

strings -f *.so

输出示例:

libc.so.6: printf
libc.so.6: malloc

5️⃣ 输出字符串长度(--radix + 自定义)

strings 本身不直接输出长度,但可配合 awk

strings a.out | awk '{print length, $0}'

四、常见实战示例

✅ 1. 查看程序里有哪些字符串

strings /bin/ls

✅ 2. 找程序里是否包含敏感信息

strings a.out | grep -i password
strings a.out | grep -i http

✅ 3. 分析 core dump / 二进制

strings core | less

✅ 4. 从内存镜像或数据文件中提取字符串

strings mem_dump.bin

✅ 5. 定位字符串在 ELF 中的位置

strings -t x -n 6 a.out | grep "main"

然后用 objdump / gdb 进一步分析。


五、strings 的局限

  • ❌ 不能反编译
  • ❌ 不能显示字符串用途
  • ❌ 可能漏掉被拆分或加密的字符串

六、与其他工具配合

strings a.out | less
strings a.out | grep -E "https?://"

结合:

  • objdump
  • readelf
  • xxd
  • gdb

七、总结速查表

功能 命令
基本使用 strings file
指定最小长度 strings -n 6 file
显示偏移 strings -t x file
显示文件名 strings -f file
搜索关键字 strings file | grep xxx

如果你有具体场景(比如:分析病毒、ELF、固件、core dump、CTF 题),可以告诉我,我可以给你更针对性的用法。

0