strings 是 Ubuntu / Linux 下一个常用命令,用来从二进制文件(可执行文件、库、镜像等)中提取“可打印字符串”。很多初学者看到一大堆输出不知道怎么看、怎么用。下面从是什么、怎么用、怎么读、怎么筛选几个方面说明。
strings 文件名
它会扫描文件,把**连续的可打印字符(默认至少 4 个字符)**输出出来。
典型用途:
strings /bin/ls
你会看到类似:
Usage: ls [OPTION]... [FILE]...
GNU coreutils
%s: invalid option
...
这些就是程序里写死的字符串。
比如:
strings /usr/bin/curl
你会看到:
http://
https://
user-agent
这就和 curl 的功能对应上了。
strings -a -t x 文件名
输出示例:
1a2b3c /etc/passwd
表示字符串在文件中的十六进制位置
strings -n 6 文件名
只显示长度 ≥ 6 的字符串,过滤噪声
strings 文件名 | grep -i password
strings 文件名 | grep http
这是最常用、最有价值的方式
strings -a 文件名
-a 扫描整个文件(不只是数据段)
strings app | grep -E "https?://"
strings app | grep -i pass
strings app | grep -i version
readelf -p .rodata 文件名
hexdump -C 文件名 | less
gdbradare2ghidrastrings 不是“直接看懂程序”,而是“从二进制里捞文字线索”
真正看懂 = strings + grep + 程序功能 + 逆向工具
如果你有具体某个 strings 输出或某个文件,可以直接贴出来,我可以帮你逐行解释。