温馨提示×

如何学linux strings命令

小樊
33
2026-09-26 16:36:33
栏目: 智能运维

strings 是 Linux 下一个非常实用但很简单的命令,常用于从二进制文件、core 文件、可执行程序中提取可读字符串。下面我从「是什么 → 怎么用 → 实战例子 → 学习建议」一步步讲。


一、strings 是什么?

strings 命令用于:

从一个文件中提取出“可打印的字符序列”

它常用于:

  • 分析二进制文件(.o、.so、可执行文件)
  • 查看程序里有没有硬编码的密码、路径、版本号
  • 分析 core dump
  • 逆向 / 安全分析入门

二、基本语法

strings [选项] 文件

最简单用法:

strings a.out

三、常用选项(重点)

1️⃣ 指定最小字符串长度(最常用)

strings -n 6 a.out
  • 默认是 4
  • -n 6 表示只显示长度 ≥ 6 的字符串

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

strings -t x a.out
  • -t x:十六进制偏移
  • -t d:十进制
  • -t o:八进制

示例输出:

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

3️⃣ 只搜索某个区间(高级)

strings -n 5 -t x binary | less

适合大文件分析。


4️⃣ 从标准输入读取

cat a.out | strings

四、实战例子(最容易理解)

✅ 例子 1:查看程序里的字符串

strings /bin/ls

你会看到:

  • 错误信息
  • 文件路径
  • 帮助信息

✅ 例子 2:查找硬编码密码(安全分析)

// test.c
int main() {
    char *pwd = "admin123";
}
gcc test.c -o test
strings test | grep admin

⚠️ 这也是为什么密码不要写死在代码里。


✅ 例子 3:分析 core 文件

strings core | less

常用于排查崩溃信息。


✅ 例子 4:结合 grep 使用(重点)

strings a.out | grep -i error

五、strings 看不到什么?

❌ 看不到:

  • 加密内容
  • 压缩数据
  • 非打印字符

✅ 适合:

  • 明文信息
  • 调试信息
  • 符号名(未 strip)

六、学习 strings 的建议路径

✅ 入门(1 小时)

  1. man strings
  2. 对一个二进制文件试 -n 和 -t
  3. 用 grep 配合

✅ 进阶(配合工具)

  • file:看文件类型
  • objdump:反汇编
  • nm:看符号
  • gdb:调试

七、一句话总结

strings = 从“看不懂的二进制”里,捞出“看得懂的文字”

如果你愿意,我可以:

  • 给你出 练习题
  • 用 真实二进制文件 演示
  • 和 objdump / nm / gdb 对比讲

你想往哪个方向学?

0 踩