温馨提示×

怎样理解ubuntu strings结果

小樊
43
2026-10-24 01:21:04
栏目: 智能运维

在 Ubuntu(或其他 Linux 系统)里,strings 是一个常用命令,用来从一个二进制文件或数据文件中提取可打印的字符串。理解它的输出结果,可以从以下几个方面入手。


一、strings 是干什么的?

strings /bin/ls

作用:

扫描文件,把“连续的可打印字符序列”打印出来。

它不解析文件结构,只是“看到像文字的东西就输出”。


二、strings 输出结果长什么样?

典型输出示例:

Usage: ls [OPTION]... [FILE]...
GNU coreutils
%s: invalid option -- '%c'
/etc/passwd
libc.so.6

这些内容通常来自:

  • 程序里的提示信息
  • 错误信息
  • 文件路径
  • 函数名(部分)
  • 编译时嵌入的版本信息

三、如何理解每一类字符串?

1. 提示 / 错误信息

Usage: ls [OPTION]...
Permission denied

✅ 说明:

  • 程序运行时会显示给用户
  • 常用于排查命令行参数、错误原因

2. 文件路径

/etc/passwd
/var/log/syslog

✅ 说明:

  • 程序可能读取或写入这些文件
  • 对安全分析、行为分析很有用

3. 库名 / 符号信息

libc.so.6
printf
malloc

✅ 说明:

  • 程序依赖的动态库
  • 调用的函数名(未 strip 时更明显)

4. 版本 / 作者信息

GNU coreutils 9.1
Build ID: xxxx

✅ 说明:

  • 软件版本
  • 编译信息

5. 看起来“乱”的字符串

H4sIAAAAAAAAA+2c...

✅ 可能是:

  • 压缩数据
  • 编码后的配置
  • 嵌入的资源

四、常见使用场景

1. 快速了解一个程序是干嘛的

strings app | less

2. 查找是否包含敏感信息

strings app | grep -i password

⚠️ 注意:

  • 只是“可能”泄露
  • 不代表明文密码一定可用

3. 分析未知二进制文件

strings unknown.bin | head

4. 配合其他选项

strings -n 8 file      # 只显示长度 ≥8 的字符串
strings -e l file     # 16-bit little endian

五、重要注意点(很容易误解)

❌ strings 不是反汇编

  • 它看不到逻辑
  • 不知道哪段代码用了哪个字符串

❌ 字符串不一定都有用

  • 编译器可能保留死代码
  • 有些是调试信息

✅ 更准确的分析应结合

  • objdump
  • readelf
  • gdb
  • nm

六、一句话总结

strings 的结果 = 文件里“像文字的东西”
用来快速窥探程序内容,但不能代替真正的逆向或调试分析。

如果你有具体的 strings 输出片段,我可以帮你逐行解释。

0 踩