在 Ubuntu(以及一般的 Linux)里,你说的 strings 通常是指 strings 命令,用来从一个二进制文件或数据文件里提取“可打印的字符串”。下面从「是什么 → 怎么用 → 怎么读懂」一步步说。
strings 是什么?strings 用于:
从非文本文件(如可执行程序、库文件、镜像、core dump)中,找出连续的可打印字符序列
常见用途:
strings /bin/ls
会输出很多字符串,比如:
Usage: ls [OPTION]... [FILE]...
%s: cannot access %s
strings my_program
strings libfoo.so
默认最小长度是 4
strings -n 8 program
strings -t x program # 十六进制
strings -t d program # 十进制
示例:
45f0 /lib64/ld-linux-x86-64.so.2
strings -e l program # 16-bit little endian
strings -e B program # 32-bit big endian
重点关注:
/etc/passwd
/usr/lib/modules
这些通常说明程序做了什么
file 看文件类型file program
输出示例:
ELF 64-bit LSB executable
grep 使用(非常重要)strings program | grep -i error
strings program | grep http
strings program | grep PASSWORD
objdump / nm(进阶)nm program # 看符号
objdump -s program
file unknown
strings unknown | less
strings unknown | grep -i config
你可能会发现:
/etc/app/config.yaml
Failed to connect to server
https://example.com/api
→ 程序会读配置、访问网络
❌ strings 不是反汇编
✅ 它只是“找字符串”
❌ 字符串不一定都有意义
✅ 有些是随机数据误判
❌ 不能看到逻辑
✅ 只能看“线索”
如果你说的是:
那通常是:
/usr/share/locale/
或
gettext
可以告诉我你是不是这个意思。
strings= 从二进制里“抠出人类能读的文字”,用来猜测程序行为和内容。
如果你有:
可以直接贴出来,我可以帮你一起“读”。