温馨提示×

linux strings能查什么

小樊
40
2026-07-18 11:20:49
栏目: 智能运维

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

下面按常见用途系统说明一下它能查什么、适合什么场景、有什么局限。


一、strings 是什么?

strings 会扫描文件(可执行文件、库、core dump、任意二进制文件等),把连续的可打印字符序列(ASCII/Unicode)输出出来

典型用法:

strings filename

二、strings 能查什么?

1️⃣ 查看程序中嵌入的字符串(最常见用途)

比如查看一个二进制程序中是否包含:

  • 提示信息
  • 调试信息
  • 硬编码路径
  • URL / IP
  • 错误信息

示例:

strings a.out

可能会看到:

Usage: ./a.out <filename>
/tmp/log.txt
https://example.com/api

常用于逆向分析、排查程序行为


2️⃣ 查找程序中是否包含敏感信息(安全审计)

比如检查是否泄露:

  • 密码
  • token
  • 私钥
  • 数据库连接串
  • 内部域名

示例:

strings app | grep -i "password"
strings app | grep -E "http|https|api"

⚠️ 注意:strings 只能看到“明文存在的字符串”


3️⃣ 查看动态库 / 可执行文件使用的函数名、符号

对 ELF 文件(Linux 程序):

strings /lib/libc.so.6

可以看到:

  • 函数名
  • 错误信息
  • 编译信息

4️⃣ 分析 core dump / 崩溃文件

strings core

用来:

  • 快速看崩溃时内存中残留的字符串
  • 辅助分析 bug(不替代 gdb)

5️⃣ 查看磁盘 / 内存镜像中的残留数据(取证)

在:

  • 内存 dump
  • 磁盘镜像
  • 删除但未覆盖的文件区域

中查找可读字符串。

strings disk.img

6️⃣ 查看非文本文件中的人类可读内容

比如:

  • 图片
  • 压缩包
  • 数据库文件
  • 网络数据包保存文件
strings image.jpg

三、strings 不能做什么?

❌ 不能:

  • 反编译程序
  • 看到运行时拼接的字符串
  • 解密加密/混淆内容
  • 看到不连续的字符串
  • 替代 objdumpgdbreadelf

例如:

char pwd[] = {'p','a','s','s','\0'};

如果写成这样,可能被识别,但如果被优化或加密,就看不到了。


四、常用参数说明

strings [选项] 文件

常用选项:

选项 说明
-n 6 只显示长度 ≥ 6 的字符串(默认 4)
-t x 显示字符串在文件中的偏移(十六进制)
-t d 偏移(十进制)
-e 指定编码(如 UTF-16)
-a 扫描整个文件(默认)

示例:

strings -n 6 -t x binary

五、和其他工具的对比

工具 用途
strings 快速提取字符串
objdump 反汇编
readelf ELF 结构分析
nm 查看符号表
grep 文本搜索
xxd 查看原始二进制

六、一句话总结

strings 用来从二进制或任意文件中提取人类可读的字符串,适合快速查看程序内容、排查信息泄露、辅助逆向和安全分析,但不能替代真正的反汇编或调试工具。

如果你有具体场景(比如:

  • 查病毒
  • 看程序有没有硬编码密码
  • 分析 ELF
  • CTF 题目)

可以告诉我,我可以给你更针对性的用法和命令示例。

0