温馨提示×

为何要用linux strings

小樊
37
2026-07-18 11:23:49
栏目: 智能运维

stringsLinux 下一个常用的命令行工具,主要用途是:
从二进制文件(或任意文件)中提取可打印的字符串

下面从“为什么要用它”和“常见使用场景”来解释。


一、strings 是什么?

strings 会扫描文件内容,找出所有长度大于等于某个阈值(默认 4)的连续可打印字符序列,并以文本形式输出。

strings /bin/ls

输出类似:

Usage: %s [OPTION]... [FILE]...
GNU coreutils
ls

二、为什么要用 strings

1️⃣ 分析二进制文件(最重要用途)

Linux 中很多程序是 编译后的二进制文件,你不能直接 cat 查看内容。

strings 可以帮你:

  • 查看程序里嵌入的字符串
  • 判断程序是干什么的
  • 分析第三方/未知程序

例子:

strings some_binary

你可能会看到:

  • 错误信息
  • URL
  • 文件路径
  • 命令名
  • 版本号

2️⃣ 安全分析 / 恶意软件检测

安全工程师经常用它来分析可疑程序。

✅ 常见用途:

  • 查找硬编码的:
    • IP 地址
    • 域名
    • 命令(bash、wget、curl)
    • 密码或密钥
strings malware_sample | grep -E "http|shell|exec|ssh"

3️⃣ 软件逆向与调试辅助

在无法反汇编的情况下,strings 是最快速的静态分析工具。

✅ 可发现:

  • 函数名(如果未 strip)
  • 库依赖
  • 调试信息
  • 日志字符串

4️⃣ 查找文件中的隐藏信息

strings 不只用于 ELF 程序,也适用于:

  • core dump
  • 内存镜像
  • 网络数据包
  • 任意二进制文件
strings core_dump | less

5️⃣ 取证与故障排查

系统出问题或程序崩溃时,可以:

  • 查看程序里到底写了哪些字符串
  • 对比不同版本的字符串差异

三、常见参数说明

strings [选项] 文件
参数 作用
-n 指定最小字符串长度
-a 扫描整个文件(不仅仅是 data 段)
-t x 显示字符串地址(十六进制)
-e 指定字符编码(UTF-16、EBCDIC 等)

示例

strings -n 6 binary
strings -a binary
strings -t x binary

四、什么时候不适合用 strings?

❌ 不适合:

  • 查看程序逻辑
  • 完整反编译
  • 已知是纯文本文件

它在这些场景下信息太“碎片”。


五、一句话总结

strings 用来从二进制或未知格式文件中,快速提取人类可读的字符串,常用于分析、调试、安全和取证。

如果你愿意,我也可以:

  • 教你用 strings 分析真实程序
  • 对比 stringsobjdump / readelf
  • 举例说明安全分析中的典型用法

0