温馨提示×

linux strings与其他工具区别

小樊
49
2026-09-29 14:47:50
栏目: 编程语言

在 Linux 下,strings 是一个专门用于从二进制文件中提取可打印字符串的工具。它常和其他文本/二进制分析工具一起使用,但定位和用途不同。下面从功能、使用场景、与其他工具的区别几个方面说明。


一、strings 是干什么的

strings 的主要作用是:

从一个文件(尤其是非文本文件,如可执行文件、core 文件、镜像)中,提取出“看起来像字符串”的连续可打印字符序列。

示例:

strings /bin/ls

可能输出:

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

二、strings 与其他常见工具的区别

1. strings vs cat / less / more

工具 用途 是否能看二进制
cat 直接输出文件内容 会显示乱码
less 分页查看文本 二进制会乱
strings 只提取可打印字符串 ✅ 适合二进制

✅ 区别:
cat 会把整个文件原样输出,二进制中会夹杂大量不可读字符;
strings 只保留“像字符串”的部分。


2. strings vs grep

工具 作用
grep 在文本中搜索匹配模式
strings 从二进制中提取文本

常见组合:

strings binary | grep password

✅ 区别:

  • grep 不懂二进制结构
  • strings 先“翻译”出字符串,再交给 grep

3. strings vs hexdump / xxd

工具 输出形式
hexdump 十六进制 + ASCII
xxd 十六进制
strings 只输出字符串

示例(xxd):

0000000: 7f45 4c46 0201 0100 0000 0000 0000 0000  .ELF............

✅ 区别:

  • hexdump/xxd 看“字节级结构”
  • strings 看“人类可读内容”

4. strings vs objdump / readelf

工具 用途
objdump 反汇编、查看节区
readelf ELF 结构分析
strings 提取字符串

✅ 区别:

  • objdump/readelf 是结构化分析工具
  • strings 是非结构化文本提取工具

示例:

readelf -p .rodata binary

比 strings 更精确,但只对 ELF 有效。


5. strings vs binutils 其他工具

strings 本身属于 GNU binutils,和以下工具定位不同:

  • nm:符号表
  • objcopy:复制/转换
  • strip:去符号

✅ strings 不涉及结构,只“扫文本”。


三、strings 的局限性

  • 不知道字符串“属于哪个段”
  • 不能区分代码和数据
  • 对压缩/加密内容无效
  • 可能误报(随机字节恰好可打印)

四、典型使用场景

  • 分析未知二进制文件
  • CTF / 逆向初探
  • 查看程序中硬编码的密钥、路径、URL
  • core dump 排错

五、一句话总结

strings 是“从二进制里找人话”的工具,简单粗暴但非常实用;
它和 grep 是搭档,和 objdump/readelf 是不同层级的分析工具。

如果你愿意,我也可以给你画一张工具选择决策图或对比表。

0 踩