温馨提示×

如何看懂ubuntu strings结果

小樊
35
2026-10-06 09:45:38
栏目: 智能运维

strings 是 Ubuntu / Linux 下一个常用命令,用来从二进制文件(可执行文件、库、镜像等)中提取“可打印字符串”。很多初学者看到一大堆输出不知道怎么看、怎么用。下面从是什么、怎么用、怎么读、怎么筛选几个方面说明。


一、strings 是干什么的

strings 文件名

它会扫描文件,把**连续的可打印字符(默认至少 4 个字符)**输出出来。

典型用途:

  • 看程序里有没有 hardcoded 的路径、URL、密码提示
  • 分析恶意软件 / 逆向工程
  • 查看 ELF / so / bin 文件中的提示信息
  • 确认程序依赖或版本信息

二、最基础的用法

strings /bin/ls

你会看到类似:

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

这些就是程序里写死的字符串。


三、如何“看懂” strings 的输出

1️⃣ 先看是不是“人类语言”

  • 英文句子 / 提示信息 → 一般是程序日志或帮助
  • 路径(/etc/…, /usr/…) → 配置文件或资源位置
  • URL(http://…) → 网络行为
  • 明显像密钥 / token → 重点关注

2️⃣ 结合程序功能理解

比如:

strings /usr/bin/curl

你会看到:

http://
https://
user-agent

这就和 curl 的功能对应上了。


四、常用参数(很重要)

✅ 显示字符串偏移

strings -a -t x 文件名

输出示例:

1a2b3c /etc/passwd

表示字符串在文件中的十六进制位置


✅ 最小长度

strings -n 6 文件名

只显示长度 ≥ 6 的字符串,过滤噪声


✅ 只搜特定内容(配合 grep)

strings 文件名 | grep -i password
strings 文件名 | grep http

这是最常用、最有价值的方式


✅ 查看 ELF 中的可读段

strings -a 文件名

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


五、实战例子

例子 1:找程序里的 URL

strings app | grep -E "https?://"

例子 2:判断是否硬编码密码

strings app | grep -i pass

例子 3:确认程序版本

strings app | grep -i version

六、strings 看不懂时怎么办

  1. 结合 objdump / readelf
    readelf -p .rodata 文件名
    
  2. 用十六进制工具
    hexdump -C 文件名 | less
    
  3. 逆向工具
    • gdb
    • radare2
    • ghidra

七、一句话总结

strings 不是“直接看懂程序”,而是“从二进制里捞文字线索”
真正看懂 = strings + grep + 程序功能 + 逆向工具

如果你有具体某个 strings 输出或某个文件,可以直接贴出来,我可以帮你逐行解释。

0 踩