温馨提示×

ubuntu strings在编程有啥用

小樊
37
2026-10-09 09:15:16
栏目: 智能运维

在 Ubuntu(以及其它 Linux 发行版)里,strings 是一个命令行工具,用途是:从一个二进制文件(或任意文件)中提取出“可打印的字符串”。在编程和开发中,它有很多实用场景。


一、strings 是干什么的?

简单说:

strings 文件名

它会扫描文件内容,把其中连续的、可打印的字符序列(比如 ASCII 字符串)打印出来。

例如一个编译后的 C 程序:

strings a.out

你可能看到:

Usage: program [options]
/home/user/project/config.txt
GCC: (Ubuntu 11.2.0)

二、在编程中有什么用?

1️⃣ 查看程序里“硬编码”的字符串

程序里写的提示信息、路径、URL、密钥等,编译后仍然在二进制里。

strings app | grep http

常用于:

  • 找程序访问的接口地址
  • 找配置文件路径
  • 排查日志或错误信息来源

2️⃣ 调试 / 逆向分析

当你没有源码时:

strings binary

可以看到:

  • 函数名(未 strip 时)
  • 错误提示
  • 作者留下的调试信息

在安全研究中非常常见。


3️⃣ 检查是否泄露敏感信息

开发中容易误把敏感内容写死:

strings program | grep password

用来做:

  • 安全审计
  • 代码泄露检查
  • CI/CD 安全检查

4️⃣ 分析第三方库 / 闭源软件

比如你用了一个 .so 或 .a 文件:

strings libxxx.so

可以知道:

  • 它支持哪些功能
  • 报错信息是什么
  • 依赖哪些模块

5️⃣ 判断文件类型 / 来源

比如:

strings unknown_binary | head

可能看到:

ELF
GCC
Ubuntu

能判断:

  • 是否是 Linux 程序
  • 用什么编译器
  • 哪个系统编译的

6️⃣ 辅助学习编译和链接

对比源码和二进制:

gcc test.c -o test
strings test

帮助理解:

  • 字符串如何存进可执行文件
  • 编译器加了什么信息

三、常见参数(Ubuntu 上)

strings -n 6 file     # 只显示长度 ≥ 6 的字符串
strings -a file       # 扫描整个文件(不只是数据段)
strings -e l file     # 指定字符编码(l=16-bit little endian)

四、和编程直接相关的例子

示例:找程序里的配置路径

strings server | grep ".conf"

示例:确认是否用了某个库

strings app | grep OpenSSL

五、一句话总结

strings 是程序员和安全工程师的“放大镜”,用来从二进制里看人类能读的文字信息。

如果你愿意,我也可以:

  • 给你一个 C / C++ / Go 示例 看 strings 效果
  • 或结合 gdb / objdump 讲更底层的内容

0 踩