出所不明の文書化されていない実行可能ファイルを取得します。コマンドラインから /?, -h, --help を試しても何も得られません。実行可能ファイルの内部を調べて、実行可能ファイルがコマンド ライン オプションをサポートしているかどうかを確認することはできますか? もしかしてリバースエンジニアリング?これを行う最良の方法は何ですか?
私は Windows の実行可能ファイルについて話しているのですが、別の OS ではどのようなアプローチが必要になるかを知りたいと思っています。
出所不明の文書化されていない実行可能ファイルを取得します。コマンドラインから /?, -h, --help を試しても何も得られません。実行可能ファイルの内部を調べて、実行可能ファイルがコマンド ライン オプションをサポートしているかどうかを確認することはできますか? もしかしてリバースエンジニアリング?これを行う最良の方法は何ですか?
私は Windows の実行可能ファイルについて話しているのですが、別の OS ではどのようなアプローチが必要になるかを知りたいと思っています。
Linux では、ステップ 1 が実行strings your_file
され、ファイル内のすべての印刷可能な文字列がダンプされます。したがって、「使用法」の説明を含め、すべての定数文字が表示されます。
次のステップはltrace
、ファイルで実行することです。これは、プログラムが行うすべての関数呼び出しを示しています。含まれている場合getopt
(またはおなじみの場合)、それは入力パラメーターを処理していることの確かな兆候です。実際、関数の 3 番目のパラメーターであるため、プログラムが期待している引数を正確に確認できるはずですgetopt
。
Windows の場合、 Windows 実行可能ファイルの逆コンパイルに関するこの質問を見ることができます。少なくともオプションを見つけるのは比較的簡単なはずです (実際に何をするかは別の話です)。
.NET 実行可能ファイルの場合は、Reflectorを使用してみてください。これにより、MSIL コードが同等の C# コードに変換され、理解しやすくなります。残念ながら、プライベート変数とローカル変数の名前は失われます。これらは MSIL に格納されていないためです。