Linux 二进制分析利器:strings 命令从入门到实战全解

📅 2026/7/30 23:56:15
Linux 二进制分析利器:strings 命令从入门到实战全解
一、命令简介strings 命令用于在二进制文件、可执行文件、对象文件或任何数据文件中查找并提取可打印的字符串序列。它默认识别长度至少为 4 个字符的可打印 ASCII 字符串以换行符或空字符终止。该工具在逆向工程、调试和二进制文件分析中非常有用常用于查找硬编码的路径、版本信息、错误消息、密钥或分析未知的文件格式。二、语法格式基本语法bash运行strings [选项]... [文件]...可以指定一个或多个文件进行扫描。 如果未指定文件或文件参数为 -则默认从标准输入stdin读取数据。三、常用选项及说明表格选项长选项说明-a--all扫描整个文件而不仅仅是目标文件如 ELF中已初始化的加载段如 .data、.text。对于普通数据文件此行为通常是默认的。-f--print-file-name在输出的每个字符串前显示其所属的文件名。这在同时检查多个文件时非常有用。-n 长度--bytes长度设置被识别为字符串的最小长度字符数。默认值为 4。-数字传统简写功能等同于 -n 数字。例如-8 等价于 -n 8。-t 格式--radix格式在输出的每一行前显示字符串在文件中的偏移量位置。格式 可以是o八进制偏移量d十进制偏移量默认x十六进制偏移量-o等同于 -t o以八进制显示偏移量。-e 编码--encoding编码指定要搜索的字符编码和字节序。可选值s7-bit ASCIIS8-bit ASCIIb16-bit 大端序 (Big-endian) Unicode (UTF-16BE)l16-bit 小端序 (Little-endian) Unicode (UTF-16LE)B32-bit 大端序L32-bit 小端序-T 目标--target目标指定二进制文件的目标格式如 elf64-x86-64, elf32-i386 等。这会影响节区section的解析方式。-一个传统选项指示扫描整个文件类似于 -a。现代版本中通常不需要显式使用。--help显示帮助信息并退出。--version显示版本信息并退出。四、示例用法示例 1基本用法查找 /bin/ls 可执行文件中的所有默认长度≥4 字符的可打印字符串。bash运行strings /bin/ls示例 2指定最小字符串长度只显示 /usr/bin/bash 中长度至少为 10 个字符的字符串。bash运行strings -n 10 /usr/bin/bash # 或使用传统格式 strings -10 /usr/bin/bash示例 3显示字符串在文件中的位置显示 /bin/cat 中的字符串及其在文件中的十六进制偏移量。bash运行strings -t x /bin/cat输出示例plaintext1b20 /lib64/ld-linux-x86-64.so.2 1b7a libc.so.6 ...示例 4扫描多个文件并显示文件名同时扫描多个共享库文件并在每行输出前显示来源文件名。bash运行strings -f /lib/x86_64-linux-gnu/libc*.so.6 | head -20示例 5结合管道进行过滤查找 /sbin/init 中所有包含 “error” 的字符串不区分大小写。bash运行strings /sbin/init | grep -i error示例 6扫描整个文件包括非加载段强制扫描 a.out 对象的每一个字节即使它不在标准的节区内。bash运行strings -a a.out示例 7搜索宽字符Unicode字符串在 Windows PE 文件如 .exe或某些数据文件中查找 UTF-16LE 编码的字符串。bash运行strings -e l suspicious_file.bin五、注意事项输出内容 strings 的输出可能包含大量看似无意义的文本因为任何连续的 4 个及以上可打印字节都会被当作 “字符串” 输出。通常需要结合 grep、awk 等工具进行过滤和针对性分析。编码问题 默认只查找 ASCII 字符串。如果文件包含 UTF-8多字节、UTF-16 或其他编码的文本需要使用 -e 选项指定正确的编码否则可能无法识别或输出乱码。二进制文件格式 对于复杂的可执行文件如 ELF、PEstrings 默认可能只扫描某些特定的节区如 .rodata。使用 -a 选项可以确保扫描整个文件但可能会更慢并产生更多输出。性能 扫描非常大的文件如数 GB 的内存转储或磁盘镜像时strings 可能会消耗较多时间和内存。可以考虑先使用 dd 等工具提取感兴趣的区域再进行分析。安全与隐私 strings 常被用于提取二进制文件中可能硬编码的敏感信息如密码、API 密钥、内网地址。在发布软件前建议使用此工具检查是否有意外泄露的信息。