温馨提示×

如何解读ubuntu strings结果

小樊
34
2026-09-24 17:37:29
栏目: 智能运维

在 Ubuntu(或一般 Linux)中,strings 命令用于从一个二进制文件或数据文件中提取可打印的字符串(通常是 ASCII 或 Unicode 文本)。这在分析程序、排查问题、逆向工程或安全审计时很常用。

下面从基本用法 → 输出含义 → 如何解读 → 实战示例逐步说明。


一、strings 是做什么的?

strings /bin/ls

作用:

  • 扫描 ls 二进制文件
  • 提取其中连续的可打印字符序列(默认长度 ≥ 4)

二、strings 输出结果怎么看?

1. 基本输出示例

Usage: ls [OPTION]... [FILE]...
GNU coreutils
%s: invalid option -- '%c'
cannot access %s

这些通常是:

  • 程序中的 提示信息
  • 错误信息
  • 格式字符串(%s, %d
  • 编译进程序的常量字符串

2. 常见内容类型

类型 示例 含义
帮助信息 Usage: xxx 命令行参数说明
错误信息 Permission denied 程序运行失败原因
文件路径 /etc/passwd 程序可能访问的位置
URL http://example.com 网络行为线索
函数名 main, printf 调试符号(若有)
版本信息 version 1.2.3 软件版本

三、常用参数(很重要)

1. 指定最小长度

strings -n 8 binary

只显示 长度 ≥ 8 的字符串,减少噪音。


2. 显示字符串偏移地址

strings -t x binary

输出示例:

  1a2b3c Usage: ls [OPTION]...
  • 1a2b3c 是十六进制偏移
  • 可用于配合 gdb / objdump

3. 显示 ASCII + Unicode

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

4. 从特定节区提取(配合 objdump

strings -a binary

扫描整个文件(不只是数据段)


四、如何“解读” strings 结果?

场景 1:快速判断程序用途

strings unknown_bin | grep -i "usage\|error\|http"

→ 看是否有网络、配置、命令参数


场景 2:安全/恶意软件分析

strings malware | grep -i "socket\|exec\|/bin/sh"

常见危险信号:

  • /bin/sh
  • system(
  • wget, curl
  • ssh, password

场景 3:定位版本或依赖

strings binary | grep -i "version\|glibc"

场景 4:辅助逆向工程

strings -t x binary > strings.txt

再用:

objdump -d binary

对照地址,理解代码逻辑。


五、strings 的局限(很重要)

❌ 不包含:

  • 变量名(除非有调试符号)
  • 控制流
  • 加密/压缩内容

✅ 适合:

  • 快速 reconnaissance
  • 辅助分析
  • 取证线索

六、一个完整示例

strings -n 6 -t x /usr/bin/whoami

可能看到:

  1020 getuid
  1030 getpwuid
  1040 unknown user

解读:

  • 调用 getuid → 获取当前用户
  • 调用 getpwuid → 转换为用户名
  • 出错时打印 unknown user

七、总结一句话

strings 是“看程序在说什么”,而不是“程序在做什么”。

如果你有具体某个 strings 输出片段,可以直接贴出来,我可以帮你逐行解读。

0