温馨提示×

如何解读linux strings结果

小樊
48
2026-09-26 16:27:34
栏目: 智能运维

strings 是 Linux 下一个常用命令,用来从二进制文件(可执行文件、库文件、core dump、固件等)中提取可打印的字符串(通常是 ASCII 或 Unicode 文本)。下面从“怎么看结果”和“怎么用结果”两个角度说明。


一、strings 基本输出是什么

strings /bin/ls

输出示例:

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

这些是从二进制文件中连续可打印字符序列中提取出来的内容,包括:

  • 程序中的字符串常量
  • 帮助信息
  • 错误信息
  • 文件路径
  • 函数名(有时)
  • URL、IP、配置项
  • 调试信息(如果有)

二、如何解读 strings 结果

1. 看“人能读懂的文本”

优先关注:

  • 错误信息(error, failed, invalid)
  • 路径(/etc/, /var/log)
  • URL / IP
  • 配置名、环境变量

例如:

/etc/passwd
http://example.com/api
CONFIG_FILE

这通常能告诉你程序会访问什么资源。


2. 看函数名 / 符号信息

如果是未 strip 的二进制:

main
parse_config
connect_server

可帮助判断:

  • 程序结构
  • 可能功能
  • 是否调用网络、加密、系统调用

3. 看是否有敏感信息(安全分析)

常见于:

  • 硬编码密码
  • token
  • 密钥
  • 内部接口

例如:

password=123456
Authorization: Bearer xxxx

⚠️ 这是安全审计重点。


4. 判断是否是加壳 / 混淆程序

如果 strings 输出很少,只有:

UPX

可能说明:

  • 程序被压缩(UPX)
  • 被加壳
  • 字符串被加密

可用:

file binary
strings binary | head

5. 结合其他工具使用

strings 只是第一步,通常配合:

工具 用途
file 判断文件类型
objdump 反汇编
nm 查看符号
grep 过滤关键字
ltrace/strace 运行时行为

例如:

strings binary | grep -i password
strings binary | grep http

三、常用参数(有助于解读)

strings -n 6 binary     # 只显示长度≥6的字符串
strings -e l binary     # 16-bit little endian
strings -e b binary     # 16-bit big endian
strings -t x binary     # 显示字符串在文件中的偏移

偏移很有用,比如:

1024 /etc/shadow

可以用十六进制编辑器定位。


四、典型使用场景总结

  • 逆向分析:了解程序功能
  • 恶意软件分析:提取 C2、行为特征
  • CTF:找 flag、提示
  • 排错:看程序内嵌提示
  • 安全审计:找硬编码密钥

如果你有具体的 strings 输出内容或某个二进制文件,可以直接贴出来,我可以帮你逐行解读。

0 踩