2012-02-24 7 views
0

私は別のCLIプログラムを呼び出すプログラムを持っていますが、どちらのプログラムのソースコードもありません。 最初のプログラムがコマンドラインプログラムを呼び出すパラメータが不思議でした。Windowsプロセスの作成呼び出しをどのように逆アセンブルしたコードで見つけるか?

Sysinternals Process Explorerを使用すると、パラメータを見つけることができました。そのうちの1つは奇妙な文字列でした。私は好奇心が強いので、どのような種類の変数が依存しているのか、ハードコーディングされているのかを知りたかったのです。

文字列がASCII形式で存在しませんでした。だから、実際にCLIアプリケーションが呼び出された場所を知りたいので、もっと深く掘り下げることができました。残念ながら、これは私が立ち往生した場所でした。 Windows APIとプロセスの作成方法についてよく分かりません。 CLIアプリケーションプロセスが作成されている部分を見つけることができません。私はStraceNTと呼ばれるツールを使ってみましたが、私はどこでも呼び出しを見つけることができませんでした(私はそれがCreateProcess()関数を使用していると仮定しました)。

申し訳ありませんが、これはばかげた質問ですが、面白かったようです。自分自身を教えるための示唆された読書は歓迎です。

+0

は、デバッガを使用してください。 NtCreateProcessにブレークポイントを設定します。 –

+1

これ以上はありませんが、チェックアウトするにはいくつかの 'CreateProcess'バリエーションがあります。 OllyDbgにタグを付けたので、モジュールリストにはAlt + E、名前には 'kernel32'、Ctrl + Nを見つけてください。 'CreateProcessA'、' CreateProcessW'(unicode)、 'CreateProcessAsUserW'、および他のCreateProcess *エクスポートのF2(ブレークポイント) *何かを呼び出すためにこれらの関数を使用しない場合は、 'ntdll'と' ZwCreateProcess' *関数を試してください。プロセスを作成する他の方法があります。デバッグするにはもっと楽しいものです。あなたがこれらの最初のものでどのように乗っていくのか教えてください。 – Leigh

+0

@Leigh:あなたがOllyDbgを使っているなら、Ctrl + Gを押すだけでいいと思います。 –

答えて

0

Process Monitorを使用できます。プロセスの作成/終了アクティビティのみを表示する場合は、フィルタOperationbegins withProcessを追加してください。プロセスが作成されたときに、作成されたものも含めてログに記録されます。

「プロセスの作成」イベントをダブルクリックして、「スタック」タブを表示することができます。 Voilà、プロセスの作成方法を示すコールスタックが表示されます。ここで

私はエクスプローラからメモ帳を開始しました:

enter image description here