Command line 如何确定.EXE是否具有命令行选项?

Command line 如何确定.EXE是否具有命令行选项?,command-line,executable,command-line-arguments,exe,Command Line,Executable,Command Line Arguments,Exe,假设您有一个.EXE,您想检查它是否有命令行选项。如何知道.EXE是否具有此功能。就我而言,我知道Nir Sofers能够通过cmd.exe和WebBrowserPassView.exe/stext output.txt启动它。但是如果我不知道,我怎么知道呢?使用类似于/?或--help的参数从shell调用它。这些是常用的帮助开关。除非可执行文件的编写者专门为您提供了一种方法来显示它提供的所有命令行开关的列表,否则无法执行此操作 正如Marcin所建议的,显示所有选项的典型开关是/?或/hel

假设您有一个.EXE,您想检查它是否有命令行选项。如何知道.EXE是否具有此功能。就我而言,我知道Nir Sofers能够通过cmd.exe和WebBrowserPassView.exe/stext output.txt启动它。但是如果我不知道,我怎么知道呢?

使用类似于
/?
--help
的参数从shell调用它。这些是常用的帮助开关。

除非可执行文件的编写者专门为您提供了一种方法来显示它提供的所有命令行开关的列表,否则无法执行此操作

正如Marcin所建议的,显示所有选项的典型开关是
/?
/help
(一些应用程序可能更喜欢Unix风格的语法,
-?
-help
)。但这只是一个普遍的惯例


如果这些不起作用,你就不走运了。您需要检查应用程序的文档,或者尝试对可执行文件进行反编译(如果您知道要查找什么)。

最简单的方法是使用,但仍需要一些搜索

确保您的exe正在运行并打开ProcessExplorer。 在ProcessExplorer中,找到二进制文件的名称并双击它以显示属性。 单击“字符串”选项卡。 向下搜索在二进制文件中找到的字符串列表。大多数字符串都是垃圾,因此可以忽略它们。搜索任何可能类似于命令行开关的内容。 从命令行测试这个开关,看看它是否有任何作用

请注意,您的二进制文件可能没有命令行开关

以下是应用于Chrome可执行文件的上述步骤,仅供参考。Chrome接受的命令行开关可以在列表中看到:

只需使用IDA PRO()反汇编文件,并搜索一些已知的命令行选项(使用搜索…文本)-在该部分中,您将在下面的屏幕截图中看到程序(lib2nit.exe)的所有命令行选项,例如,它显示了一个记录在案的命令行选项(/COM2TAG)但也有一些未记录的,如/L。希望这有帮助吗


实际上,这是对Marcin答案的扩展

但您也可以尝试传递“垃圾”参数,以查看是否返回任何错误。直接从shell中的可执行文件获取任何响应都意味着它可能正在查看您传递的参数,错误响应几乎可以保证它是正确的


否则,您可能必须直接询问出版商/创作者/所有者。。。对于最终用户来说,自己嗅探二进制文件似乎太多了。

Sysinternals还有另一个工具可以使用

例如:


strings.exe c:\windows\system32\wauclt.exe>%temp%\wauclt\u strings.txt&%temp%\wauclt\u strings.txt
这是我在windows 10上从控制台获得的信息:

C:\>find /?
Searches for a text string in a file or files.

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]

  /V         Displays all lines NOT containing the specified string.
  /C         Displays only the count of lines containing the string.
  /N         Displays line numbers with the displayed lines.
  /I         Ignores the case of characters when searching for the string.
  /OFF[LINE] Do not skip files with offline attribute set.
  "string"   Specifies the text string to find.
  [drive:][path]filename
             Specifies a file or files to search.

If a path is not specified, FIND searches the text typed at the prompt
or piped from another command.

它们没有帮助,因为.exe刚刚启动,没有进一步的输出。是的,但是一定有可能通过RE或其他技术调试它。@Ian你当然可以通过应用程序进行调试并查找开关。这对查找MalwareBytes的开关非常有帮助。为了加快搜索速度,大多数程序开关都以“/”或“-”开头,因此使用带有这些字符的“查找”对话框(上图右下角)可以帮助您更快地找到要查找的内容。Process Explorer属性面板中的“查找”支持哪种功能?正则表达式?通配符?乍一看,我似乎不明白。@JohnSuit,恐怕只是基本的搜索,但您可能会注意到“保存”按钮,它允许您将列表导出为.txt文件。您可以使用任何支持正则表达式、通配符等的文本编辑器打开此文档并进行搜索。谢谢@user8027324。我在你的答案中添加了一些格式。Strings.exe并不是一种绝对可靠的方法,但我以前确实使用过它。字符串输出也包含在进程属性的字符串选项卡中。将垃圾作为参数提供以查看程序如何响应是一个好主意。