温馨提示×

如何用linux strings命令

小樊
44
2026-07-07 04:10:00
栏目: 智能运维

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


一、strings 是什么?

strings 会扫描文件(如可执行文件、core dump、内存镜像等),提取长度大于等于指定值的可打印字符序列(默认是 4 个字符)。


二、基本语法

strings [选项] 文件...

三、常用示例

1️⃣ 最基本用法

strings a.out

a.out 中提取所有可打印字符串。


2️⃣ 指定最小字符串长度

strings -n 6 a.out

只显示 长度 ≥ 6 的字符串(默认是 4)。


3️⃣ 显示字符串在文件中的偏移

strings -t x a.out

十六进制 显示偏移:

 4f3 /lib64/ld-linux-x86-64.so.2

也可以用:

  • -t o 八进制
  • -t d 十进制

4️⃣ 从多个文件中提取

strings file1 file2

5️⃣ 从标准输入读取

cat a.out | strings

6️⃣ 只扫描特定段(ELF 可执行文件)

strings -e l a.out

常见编码选项:

  • -e s:7 位 ASCII(默认)
  • -e l:16 位小端
  • -e b:16 位大端
  • -e B:32 位大端
  • -e L:32 位小端

四、常见实用场景

✅ 1. 查看程序中嵌入的字符串

strings /bin/ls

常用于:

  • 查看程序中的路径
  • 查看提示信息
  • 查看调试信息

✅ 2. 查找是否包含敏感信息

strings app | grep -i password
strings app | grep -i token

✅ 3. 分析 core dump

strings core.1234

✅ 4. 查看动态库依赖

strings a.out | grep '\.so'

✅ 5. 配合 grep 使用

strings a.out | grep -E 'http|https'

五、strings 输出的是什么?

  • 可打印字符:A-Z a-z 0-9 / . - _
  • 连续字符序列
  • 不是完整句子,只是“看起来像字符串的东西”

⚠️ 注意:

  • 不能反编译程序
  • 不能还原源码
  • 只能看到“残留文本”

六、strings 与 hexdump / objdump 的区别

命令 作用
strings 提取可打印字符串
hexdump 查看原始十六进制
objdump 反汇编、查看 ELF 结构

七、常见错误

❌ 对文本文件用 strings(没意义)

strings text.txt

❌ 想用 strings 找函数名(不一定有)


八、小技巧

只显示前 20 行:

strings a.out | head -n 20

输出到文件:

strings a.out > strings.txt

如果你愿意,我可以:

  • 结合 ELF 文件结构 讲 strings 原理
  • 给你 实战逆向分析示例
  • 对比 strings vs grep vs xxd

你现在是在 调试程序 / 逆向 / 安全分析 / 日常排查 哪种场景?

0