温馨提示×

如何读懂ubuntu strings

小樊
41
2026-10-18 04:05:56
栏目: 智能运维

在 Ubuntu(以及一般的 Linux)里,你说的 strings 通常是指 strings 命令,用来从一个二进制文件或数据文件里提取“可打印的字符串”。下面从「是什么 → 怎么用 → 怎么读懂」一步步说。


一、strings 是什么?

strings 用于:

从非文本文件(如可执行程序、库文件、镜像、core dump)中,找出连续的可打印字符序列

常见用途:

  • 看程序里硬编码的字符串(路径、错误信息、URL)
  • 分析病毒 / 恶意软件
  • 逆向工程(辅助)
  • 排查程序崩溃或配置来源

二、基本用法

1️⃣ 最简单用法

strings /bin/ls

会输出很多字符串,比如:

Usage: ls [OPTION]... [FILE]...
%s: cannot access %s

2️⃣ 从指定文件读取

strings my_program
strings libfoo.so

3️⃣ 只看长度 ≥ N 的字符串

默认最小长度是 4

strings -n 8 program

4️⃣ 显示字符串在文件中的偏移

strings -t x program   # 十六进制
strings -t d program   # 十进制

示例:

  45f0 /lib64/ld-linux-x86-64.so.2

5️⃣ 只读取某一段(高级)

strings -e l program   # 16-bit little endian
strings -e B program   # 32-bit big endian

三、如何“读懂” strings 的输出?

✅ 1. 看“像人话”的内容

重点关注:

  • 文件路径
    /etc/passwd
    /usr/lib/modules
    
  • URL / IP
  • 错误提示
  • 配置项名

这些通常说明程序做了什么


✅ 2. 结合 file 看文件类型

file program

输出示例:

ELF 64-bit LSB executable

✅ 3. 配合 grep 使用(非常重要)

strings program | grep -i error
strings program | grep http
strings program | grep PASSWORD

✅ 4. 结合 objdump / nm(进阶)

nm program        # 看符号
objdump -s program

四、真实例子

例子:分析一个未知程序

file unknown
strings unknown | less
strings unknown | grep -i config

你可能会发现:

/etc/app/config.yaml
Failed to connect to server
https://example.com/api

→ 程序会读配置、访问网络


五、常见误区

❌ strings 不是反汇编
✅ 它只是“找字符串”

❌ 字符串不一定都有意义
✅ 有些是随机数据误判

❌ 不能看到逻辑
✅ 只能看“线索”


六、如果你指的是“Ubuntu 系统里的字符串资源”

如果你说的是:

  • Ubuntu 的 界面文字
  • 国际化(i18n)字符串

那通常是:

/usr/share/locale/

或

gettext

可以告诉我你是不是这个意思。


七、一句话总结

strings = 从二进制里“抠出人类能读的文字”,用来猜测程序行为和内容。

如果你有:

  • 具体文件
  • 具体报错
  • 想分析的程序

可以直接贴出来,我可以帮你一起“读”。

0 踩