温馨提示×

strings命令有何作用

小樊
39
2026-08-28 16:46:12
栏目: 编程语言

strings 是 Linux/Unix 系统中一个非常实用的命令行工具,主要作用是:

从一个二进制文件(或其他非文本文件)中提取出其中的可打印字符串。


一、基本作用

strings 会扫描给定的文件,从中找出连续的可打印字符序列(通常是长度 ≥ 4),并以文本形式输出。

它常用于:

  • 分析 二进制程序
  • 查看 核心转储文件
  • 检查 固件、镜像、库文件
  • 提取 隐藏在程序中的字符串信息

二、常见使用场景

1️⃣ 查看程序中包含的字符串

strings a.out

可能输出:

Usage: hello [options]
/home/user/data.txt
https://example.com

这些字符串通常是:

  • 提示信息
  • 文件路径
  • 网址
  • 调试信息

2️⃣ 查看程序中是否包含敏感信息(安全问题)

strings app | grep password

⚠️ 注意:

千万不要在程序中硬编码密码!
strings 说明这类信息很容易被提取。


3️⃣ 分析未知二进制文件

strings unknown_bin

可以判断:

  • 是否是 ELF 文件
  • 用到了哪些库
  • 大致功能(如 HTTP、SQL、shell 命令)

4️⃣ 查看动态库中的字符串

strings libfoo.so

三、常用参数

✅ 指定最小字符串长度

strings -n 6 app

只输出 长度 ≥ 6 的字符串。


✅ 显示字符串在文件中的偏移

strings -t x app

输出示例:

 4a3 /lib64/ld-linux-x86-64.so.2
 4d8 libc.so.6

支持:

  • -t x:十六进制
  • -t d:十进制
  • -t o:八进制

✅ 从特定节区读取(如 ELF)

strings -e l app

字符编码选项:

  • -e s:7-bit ASCII
  • -e l:16-bit little-endian
  • -e b:16-bit big-endian

四、底层原理(简要)

  • strings 不做反汇编
  • 它只是扫描文件中的 连续可打印字符
  • 所以:
    • 不能看到程序逻辑
    • 但可以看到“暴露在内存中的文本”

五、常见误区

strings 不能:

  • 解密加密内容
  • 还原源码
  • 反编译程序

✅ 它是一个 快速、轻量的信息提取工具


六、总结一句话

strings 用于从二进制文件中提取可读字符串,常用于程序分析、安全审计和调试。

如果你愿意,我也可以:

  • 用一个 真实 ELF 文件示例演示
  • 对比 stringsobjdump / readelf
  • 讲它在 CTF / 逆向 / 安全分析 中的用法

0