是否有 Windows 等效的 Unix“字符串”命令?

joh*_*nny 40 windows linux unix command-line

strings在 Unix 和 Linux 中,从二进制文件中提取可打印的字符串。是否有适用于 Windows 的版本?我找不到一个。

sgm*_*ore 46

不是 (AFAIK) 内置的,但有一个可从 SysInternals ( live link ) 获得。SysInternals字符串不是 Unix 工具的直接移植;编写它是为了查找 Unicode 字符串和 ASCII:

在 NT 和 Win2K 上工作意味着可执行文件和目标文件将多次嵌入 UNICODE 字符串,您无法用标准 ASCII 字符串或 grep 程序轻松看到这些字符串。


小智 8

一个快速简单的解决方案:

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 /?


sle*_*ske 6

我相信MinGW包含一个 Windows 版本的 GNU binutils,后者又包含该strings程序。你可以试试。

  • 当然,*binutils* 包含在 Cygwin 环境中 (http://www.cygwin.com/)。它似乎没有包含在 GnuWin32 和 UnxUtils 中,这两个项目是在 Windows 上提供 unix 实用程序的另外两个端口项目。 (2认同)

归档时间:

查看次数:

67877 次

最近记录:

4 年,9 月 前