strings
在 Unix 和 Linux 中从二进制文件中提取可打印字符串。有适用于 Windows 的版本吗?我找不到。
答案1
据我所知,不是内置的,但有一个可用来自 SysInternals(直播链接)SysInternals字符串不是 Unix 工具的直接移植;它被编写用于查找 Unicode 字符串以及 ASCII:
在 NT 和 Win2K 上工作意味着可执行文件和目标文件将多次嵌入 UNICODE 字符串,而这些字符串是无法通过标准 ASCII 字符串或 grep 程序轻易看到的。
答案2
一个快速简单的解决方案:
more < FILE_PATH.exe | findstr "."
这将打印任何类型的文件中的所有字符串(带有一些额外的垃圾),由新行分隔。
实际发生的情况是more < FILE_PATH.exe
将 FILE_PATH.exe 的 ascii 视图打印到控制台,并findstr "."
过滤掉任何非字符串的内容(通过添加更多“。”定义最小长度,例如findstr "....."
仅过滤长度为 5+ 的字符串)。
strings -n 4 FILE_PATH
=>more < FILE_PATH | findstr "...."
strings -n 8 FILE_PATH
=>more < FILE_PATH | findstr "........"
当然,您可以使用 findstr 进行更精确的过滤(参见findstr /?
)
答案3
我相信明网包含 GNU binutils 的 Windows 版本,而后者又包含该strings
程序。您可以尝试一下。
答案4
对于面向 GUI 的替代方案,请尝试 Juan M. Aguirregabiria 编写的这个实用程序集合中的“提取文本”。快速且易于使用,并且可以持久自定义要匹配哪些字符作为字符串。但可能不支持 Unicode。
http://tp.lc.ehu.es/jma/win95.html
如果上述链接失效,则包含 Softpedia 链接 http://www.softpedia.com/get/Programming/File-Editors/Extract-Text.shtml