温馨提示×

怎样解读linux strings结果

小樊
40
2026-10-05 10:15:13
栏目: 智能运维

strings 是 Linux 下一个常用命令,用来从二进制文件(可执行文件、库、镜像、core dump 等)中提取可打印的字符串(通常是 ASCII 或 Unicode 文本)。

下面从「命令本身 → 输出内容 → 如何解读 → 实际用途」一步步说明。


一、strings 是什么

strings file

作用:扫描文件,把连续可打印字符(默认长度 ≥ 4)打印出来。

示例:

strings /bin/ls

你可能会看到:

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

二、strings 输出怎么看

1. 每一行代表什么

  • 一行 = 文件中一段连续可打印字符
  • 不代表“完整句子”或“代码逻辑”
  • 可能是:
    • 错误信息
    • 变量名
    • 函数名
    • 路径
    • 版权信息
    • 调试字符串

2. 常见内容类型

类型 示例 说明
错误信息 Segmentation fault 程序可能崩溃
路径 /etc/passwd 可能访问的文件
URL http://example.com 网络行为
函数名 main, malloc 编译未剥离符号
版本信息 OpenSSL 1.1.1 依赖库版本
调试信息 DEBUG: x=%d 程序调试痕迹

三、常用参数(很重要)

1. 显示字符串偏移

strings -a -t x file

输出:

  1f3c /lib64/ld-linux-x86-64.so.2

→ 字符串在文件中的十六进制偏移

常用于逆向 / 定位。


2. 最小长度

strings -n 8 file

只显示 ≥8 字符的字符串,减少噪音。


3. 显示编码

strings -e l file   # 16-bit little endian
strings -e b file   # 16-bit big endian

4. 全文件扫描

strings -a file

默认可能只扫描某些段,-a 扫整个文件。


四、如何“解读” strings 结果(思路)

✅ 1. 看程序“说了什么”

  • 错误信息 → 功能 & 可能的崩溃点
  • 帮助文本 → 支持的参数
strings binary | grep -i usage

✅ 2. 看它可能“做了什么”

strings binary | grep -E '/(etc|tmp|home|var)'

→ 文件访问倾向

strings binary | grep -E 'http|ftp|socket'

→ 网络行为


✅ 3. 判断是否加壳 / 混淆

  • strings 很少
  • 全是乱码 → 可能加壳(UPX、VMProtect)

✅ 4. 配合其他工具

工具 用途
file 文件类型
objdump 反汇编
readelf ELF 结构
grep 过滤信息
xxd 查看偏移内容

五、实战例子

判断是不是恶意程序

strings malware | grep -iE 'wget|curl|base64|/bin/sh'

查版本

strings binary | grep -i version

查硬编码密码(不一定有)

strings binary | grep -iE 'password|passwd|secret'

六、注意点(很重要)

⚠️ strings 不能:

  • 还原逻辑
  • 显示加密内容
  • 证明安全 or 恶意

✅ 它只是“文字线索”


如果你愿意,可以:

  • 贴一段 strings 输出
  • 或说明你在分析什么(程序 / 病毒 / 固件 / core 文件)

我可以直接帮你逐行解读。

0 踩