web-dev-qa-db-ja.com

.EXEにコマンドラインオプションがあるかどうかを確認するにはどうすればよいですか?

.EXEがあり、コマンドラインオプションがあるかどうかを確認するとします。 .EXEにこの機能があるかどうかを知る方法はありますか。私の場合、Nir Sofers WebBrowserPassView.exe にはcmd.exeおよびWebBrowserPassView.exe/stext output.txtを介して起動できることがわかっています。しかし、わからない場合はどうすればわかりますか?

43
JohnnyFromBF

最も簡単な方法はuse ProcessExplorer を使用することですが、それでも検索が必要です。

Exeが実行されていることを確認し、ProcessExplorerを開きます。 ProcessExplorerでバイナリファイルの名前を見つけ、ダブルクリックしてプロパティを表示します。 [文字列]タブをクリックします。バイナリファイルで見つかった文字列のリストを検索します。ほとんどの文字列はゴミなので、無視できます。コマンドラインスイッチに似ている可能性のあるものを検索します。コマンドラインからこのスイッチをテストし、何かを行うかどうかを確認します。

バイナリが単にコマンドラインスイッチを持たない可能性があることに注意してください。

参考のために、上記の手順をChrome実行可能ファイルに適用します。 Chromeで受け入れられるコマンドラインスイッチは、リストに表示されます。

Process Explorer analyzing Chrome.exe

57
Adam

/?--helpなどの引数を使用して、シェルから呼び出します。これらは通常のヘルプスイッチです。

19
Marcin

実行可能ファイルの作成者が、提供するすべてのコマンドラインスイッチのリストを表示する方法を特に提供していない限り、これを行う方法はありません。

Marcinが示唆するように、すべてのオプションを表示するための典型的なスイッチは/? または /help(一部のアプリケーションはUnixスタイルの構文を好むかもしれません。-?および-help、それぞれ)。しかし、これらは一般的な慣例にすぎません。

それらが機能しない場合、あなたは運が悪いです。アプリケーションのドキュメントを確認するか、実行可能ファイルを逆コンパイルしてみてください(探しているものがわかっている場合)。

3
Cody Gray

IDA PRO( https://www.hex-rays.com/products/ida/index.shtml )を使用してファイルを逆アセンブルし、既知のコマンドラインオプションを検索します(検索を使用します。 .Text)-そのセクションでは、通常、すべてのコマンドラインオプションが表示されます-以下のスクリーンショットのプログラム(LIB2NIST.exe)の場合、たとえば、文書化されたコマンドラインオプション(/ COM2TAG)だけでなく、いくつかの文書化されていないオプション、/ Lなど。お役に立てれば?

enter image description here

2
Tom Wenseleers

本当にこれはMarcinの答えの延長です。

しかし、「ごみ」引数を渡して、エラーが返されるかどうかを確認することもできます。シェルで実行可能ファイルから直接応答を取得するということは、渡している引数を調べている可能性が高いことを意味し、エラー応答はそれが保証されていることに近いことを意味します。

パブリッシャー/クリエーター/所有者に直接尋ねなければならないかもしれないことに失敗した場合...バイナリを自分でスニッフィングすることは、エンドユーザーにとってはあまりにも多くの作業のように思えます。

1
Izzy

Sysinternalsには、使用できる別のツール Strings.exe があります

例:

strings.exe c:\windows\system32\wuauclt.exe > %temp%\wuauclt_strings.txt && %temp%\wuauclt_strings.txt

1
user8027324