温馨提示×

ubuntu strings输出怎么分析

小樊
50
2026-09-12 08:57:35
栏目: 智能运维

在 Ubuntu(或其他 Linux)里,strings 命令用于从一个二进制文件(可执行文件、库、core dump、固件等)中提取可打印的字符串。分析 strings 输出,通常是为了:

  • 逆向分析 / 安全审计
  • 排查程序行为
  • 查找硬编码信息(路径、URL、密码、调试信息)
  • 确认文件类型或编译信息

下面从 基本用法 → 输出分析思路 → 实战技巧 讲清楚。


一、基本用法

strings 文件名

示例:

strings /bin/ls

常见参数:

strings -n 6 file      # 只显示长度 ≥6 的字符串
strings -a file        # 扫描整个文件(不跳过某些段)
strings -e l file      # 指定字符编码(l=16-bit little endian)
strings -t x file      # 显示字符串偏移(十六进制)
strings -f file        # 显示文件名

二、strings 输出长什么样?

示例输出:

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

这些字符串通常来自:

  • 源代码中的字符串常量
  • 错误信息
  • 日志格式
  • 文件路径
  • 编译信息(gcc、glibc 版本)

三、如何“分析” strings 输出?

1️⃣ 看程序“说了什么”(错误信息)

strings app | grep -i error

可判断:

  • 程序支持哪些功能
  • 可能的崩溃原因

2️⃣ 找硬编码敏感信息(安全分析)

strings app | grep -iE 'password|token|api|secret|http'

常见发现:

  • API Key
  • 内部 URL
  • 调试账号
  • 加密盐值

⚠️ 如果发现明文密码,说明代码有严重安全问题


3️⃣ 判断程序类型和来源

strings app | grep -iE 'gcc|clang|glibc|python|go|rust'

例如:

GCC: (Ubuntu 11.4.0)
GLIBC_2.34

可判断:

  • 编译语言
  • 编译器版本
  • 依赖的 libc 版本

4️⃣ 查找文件路径

strings app | grep '/'

可能发现:

  • 配置文件路径
  • 日志路径
  • 硬编码绝对路径(可移植性问题)

5️⃣ 分析协议 / 网络通信

strings app | grep -iE 'GET|POST|HTTP|socket|connect'

用于:

  • 判断是否在联网
  • 通信协议类型

6️⃣ 定位字符串在文件中的位置(逆向用)

strings -t x binary | grep 'main'

输出:

0x1a3f main

然后用 objdump / gdb / radare2 进一步分析。


四、结合其他工具效果更佳

strings + grep

strings binary | grep -i 'debug'

strings + less

strings binary | less

strings + xxd

xxd binary | grep 'GET'

strings + file

file binary
strings binary

五、典型实战场景

✅ 场景 1:判断未知二进制是什么

file unknown
strings unknown | head

✅ 场景 2:CTF / 逆向题

strings chall | grep -i flag

✅ 场景 3:查后门 / 木马

strings malware | grep -iE 'bash|curl|wget|/bin/sh'

六、注意事项(很重要)

❌ strings 不是反汇编

  • 看不到逻辑
  • 看不到函数调用

✅ 真正分析程序行为要用:

  • objdump
  • gdb
  • strace
  • ltrace
  • radare2 / ghidra

七、一句话总结

strings 是“看二进制在‘说话’”,不是“看它在‘想什么’”

如果你愿意,可以把 具体 strings 输出片段 或 分析目标(CTF / 安全 / 调试) 发出来,我可以帮你逐行分析。

0 踩