温馨提示×

如何解析debian strings输出

小樊
41
2026-09-04 00:13:19
栏目: 智能运维

在 Debian(及其他 Linux 发行版)中,strings 是一个常用工具,用于从二进制文件、库文件或任意数据文件中提取可打印字符串。下面从「基本用法 → 输出含义 → 实际解析方法 → 常见场景」系统说明。


一、strings 是做什么的?

strings <文件>

它会扫描文件中的连续可打印字符序列(默认长度 ≥ 4),常用于:

  • 查看程序中的硬编码字符串
  • 分析闭源/未知二进制
  • 提取错误信息、路径、URL
  • 逆向工程 & 安全分析

二、基本输出示例

strings /bin/ls

输出类似:

Usage: %s [OPTION]... [FILE]...
%s: invalid option -- '%c'
/lib64/ld-linux-x86-64.so.2
GNU
...

每一行就是一个“字符串”。


三、如何“解析” strings 输出(重点)

1️⃣ 结合 -n 控制最小长度

strings -n 6 binary
  • 忽略太短的字符串(减少噪音)
  • 常用于定位有意义文本

2️⃣ 显示字符串偏移(非常重要)

strings -t x binary

输出示例:

1a2b3c Usage: %s [OPTION]
1a2b50 /etc/passwd
  • 1a2b3c 是十六进制偏移
  • 可配合 objdumpgdb 定位代码位置

3️⃣ 指定字符编码

strings -e l binary   # 16-bit little endian
strings -e b binary   # 16-bit big endian

适用于:

  • Unicode 字符串
  • 跨平台二进制

4️⃣ 过滤关键内容(核心技巧)

strings binary | grep -i error
strings binary | grep -E "https?://"
strings binary | grep "/etc/"

常见关注点:

  • 文件路径
  • URL
  • 调试信息
  • 函数名(如果未 strip)

5️⃣ 与 file / readelf 联合分析

file binary
readelf -h binary

判断:

  • ELF / PE / Mach-O
  • 是否 stripped(去符号)

四、在 Debian 包分析中的实际用法

分析 .deb 包

dpkg-deb -x package.deb ./out
strings ./out/usr/bin/xxx

常用于:

  • 查看软件行为
  • 审计开源/闭源组件

五、strings 输出的“局限”

  • ❌ 不显示字符串用途
  • ❌ 不显示调用关系
  • ❌ 无法还原逻辑

如需深入:

objdump -d binary
gdb binary
radare2 / ghidra

六、常见误区

误区 正确认知
strings = 源码 ❌ 只是文本碎片
所有字符串都有用 ❌ 大量是编译器噪音
strings 能解密 ❌ 只能看明文

七、实用组合命令(推荐)

strings -n 6 -t x binary | grep -i "password\|token\|key"

如果你有具体文件类型(如 .deb、内核模块、Go 二进制),或想做逆向/安全分析,可以告诉我,我可以给你更针对性的解析方法。

0