在 Linux(尤其是 Debian)语境里,“strings” 通常指两种东西之一,分析方式不同。下面按最常见的两种情况说明,并给出实用示例。
strings 命令(二进制分析工具)strings 用来从一个二进制文件(ELF、so、可执行文件、core dump、固件等)中提取可打印的字符串。
常见用途:
strings /usr/bin/ls
输出例子:
/lib64/ld-linux-x86-64.so.2
Usage: %s [OPTION]... [FILE]...
https://www.gnu.org/
strings -n 8 binary
默认是 4,太短会输出很多噪音。
strings -t x binary
输出:
3f2c /lib64/ld-linux-x86-64.so.2
4a10 Usage: %s
strings -e l binary # 16-bit little-endian
strings -e b binary # 16-bit big-endian
strings -e s binary # 7-bit ASCII
dpkg -L nginx | grep bin
strings /usr/sbin/nginx | grep -i version
或查找可疑路径:
strings /usr/bin/xxx | grep -E '(/etc|/tmp|http|https)'
Debian 使用 GNU gettext 系统管理多语言字符串:
.pot:模板.po:翻译文件.mo:编译后的翻译/usr/share/locale/
/usr/share/locale-langpack/
结构示例:
/usr/share/locale/zh_CN/LC_MESSAGES/apt.mo
.mo 文件msgunfmt /usr/share/locale/zh_CN/LC_MESSAGES/apt.mo
输出:
msgid "Yes"
msgstr "是"
.po 文件less /usr/share/locale/zh_CN/LC_MESSAGES/apt.po
或提取所有原文:
grep ^msgid apt.po
dpkg -L apt | grep '\.mo$'
| 场景 | 工具 |
|---|---|
| 分析二进制中的字符串 | strings |
| 查程序里的路径 / URL | strings + grep |
| 分析多语言翻译 | msgunfmt / gettext |
| Debian 包内容分析 | dpkg -L |
strings binary | grep -iE 'url|http|exec|system|/tmp'
或:
objdump -s -j .rodata binary
如果你能具体说明:
我可以给你更精确的分析流程和命令。