在 Linux 下,strings 命令用于从一个二进制文件(可执行文件、库文件、core dump 等)中提取“可打印的字符串”。理解它的输出,其实主要是搞清楚:这些字符串是什么、为什么会出现、能看出什么信息。
下面分几个方面说明。
strings 在做什么strings /bin/ls
它的本质是:
所以它不是解析程序结构,只是“捞文本”。
strings 结果通常包含什么比如:
printf("Usage: ls [options]\n");
会直接出现:
Usage: ls [options]
failed to open file
permission denied
/etc/passwd
/usr/lib/libc.so.6
main
printf
open
GCC: (Ubuntu 11.2.0) 11.2.0
SQLite version 3.35
OpenSSL 1.1.1
http, GET, POST → 可能是网络程序/etc/shadow → 可能涉及权限管理libpthread.so.0
libssl.so.1.1
说明依赖线程、SSL
clang version 14
说明不是 GCC 编译的
Usage: myprog [--help]
config.json
getenv
malloc
含义:
strings -n 6 file # 最少 6 个字符
strings -a file # 扫描整个文件
strings -t x file # 显示偏移(十六进制)
strings -e l file # 16-bit little endian
如果你愿意,可以把某段 strings 输出贴出来,我可以直接帮你逐行解释它“在说什么”。