strings 是 Linux 下一个从二进制文件或数据中提取可打印字符串的工具,常用于分析程序、调试、逆向、取证等场景。下面从基本用法到常见实战给你一个完整说明。
strings 会扫描文件,把长度大于等于一定值的可打印字符序列输出出来,常用于:
strings [选项] 文件...
示例:
strings a.out
-n)默认是 4,可以改:
strings -n 6 a.out
-t)非常有用,用于定位字符串位置。
strings -t x a.out
strings -t d a.out
示例输出:
8048540 /usr/lib/libc.so.6
strings -e l a.out
常见编码:
s:7-bit ASCII(默认)S:8-bitl:16-bit little-endianb:16-bit big-endianL:32-bitB:64-bit-f)多个文件时很有用:
strings -f *.so
输出示例:
libc.so.6: printf
libc.so.6: malloc
--radix + 自定义)strings 本身不直接输出长度,但可配合 awk:
strings a.out | awk '{print length, $0}'
strings /bin/ls
strings a.out | grep -i password
strings a.out | grep -i http
strings core | less
strings mem_dump.bin
strings -t x -n 6 a.out | grep "main"
然后用 objdump / gdb 进一步分析。
strings a.out | less
strings a.out | grep -E "https?://"
结合:
objdumpreadelfxxdgdb| 功能 | 命令 |
|---|---|
| 基本使用 | strings file |
| 指定最小长度 | strings -n 6 file |
| 显示偏移 | strings -t x file |
| 显示文件名 | strings -f file |
| 搜索关键字 | strings file | grep xxx |
如果你有具体场景(比如:分析病毒、ELF、固件、core dump、CTF 题),可以告诉我,我可以给你更针对性的用法。