【解決方法】Createprocessw フックが正しく機能しない


EasyHook を使用して explorer.exe プロセスにフックし、kernel32.dll からの CreateProcessW メソッド呼び出しをリッスンするアプリケーションを作成しています。 ユーザーがファイルをダブルクリックして(管理者権限なしで)実行した場合にのみ、プログラムはCreateProcessWを傍受しますが、管理者としてアプリケーションを実行しようとすると、プログラムがCreateProcessWを傍受しませんが、プロセスが作成されます。 私の質問は、私のプログラムがこのメソッドをキャプチャしない理由です。 管理者としてファイルを実行すると、CreateProcessW とは異なるメソッドが呼び出されますか?

私のプログラムは、app.manifest に含まれる「highestAvailable」権限で実行されます

私が試したこと:

var createProcessHook = EasyHook.LocalHook.Create(
EasyHook.LocalHook.GetProcAddress(“kernel32.dll”, “CreateProcessW”),
new CreateProcessW_Delegate(CreateProcessW_Hook),
これ);

解決策 1

アカウントとして実行されているコードは、別のアカウントまたは昇格されたアカウントによって行われた呼び出しを傍受できません。 これはセキュリティ上の理由によるものです。 考えてみてください。 管理者として実行されているコードをインターセプトし、独自のコードまたは関数呼び出しを挿入する、おしゃべりなユーザーが必要ですか?

その呼び出しをキャプチャするには、「フック」を管理者として実行する必要があります。

コメント

タイトルとURLをコピーしました