1

物理的な CPU と HAL の上にボトルネックはありますか? または、Windows XP、Vista、または 7 で、ある時点で CreateProcess を呼び出さないプロセスを開始する方法が複数ありますか?

4

2 に答える 2

4

あなたの質問に対するコメントを考えると:

Anti-Executable ドライバーを構築し、計画を立てるだけで、createprocess を制御するだけで十分かどうか疑問に思っています。

いいえ、セキュリティがあなたの懸念事項である場合、それだけでは十分ではありません. NtCreateProcessたとえば、その下にあります。そして、それらだけではありません。

システムが提供する最良の方法は、ファイル システム フィルター ドライバーです。実際、WDK には、求めていることを実行するために必要な変更がわずかな量のサンプルが付属しています。XPについて尋ねたので、XP SP1以降のサポートを回避できる場合は、ミニフィルターを使用できます。

PsSetLoadImageNotifyRoutinePsSetCreateProcessNotifyRoutine残念ながら通知のみです。そのため、彼らは通知するイベントについて何もすることを許可していません。そして、これを回避しようとするべきではありません

昔、SSDT フックを使用しZwCreateSectionて、返されたハンドルをエラー メッセージを表示する実行可能ファイルに交換する巧妙な実装を見てきました。実行可能ファイル自体が元のコマンド ラインを参照するため、xyz の理由でコマンドが禁止されていることをユーザーに通知する適切なエラー メッセージを表示できます。ただし、Vista 以降、さらには XP および 2003 64 ビット (x64) でも、SSDT フックを記述するのは難しくなります。誰もが眉をひそめることは言うまでもありませんが、それを正しく行うには非常に広範な経験が必要であり (それでも、大混乱を引き起こす可能性のある欠陥があることがよくあります)、Windows ロゴ プロセスで目指している可能性のある認定を忘れることがあります。 .

結論: ファイル システム フィルター ドライバーを使用して、不要な実行可能ファイルへのアクセスを拒否します。ミニフィルターを使用すると学習曲線は中程度になりますが、従来のフィルターを使用する場合は、最初にいくつかのコースを受講してから、最初の試行を開始することをお勧めします.

于 2013-03-15T05:04:33.563 に答える
2

を簡単に分解してみると、CreateProcessに次の 2 つのことを行っているように見えます。

  • NtCreateUserProcess(これは syscall 0xAA です) を呼び出して、実際にカーネル内にプロセス構造 ( PEBなど)を作成します。
  • NtResumeThread(syscall 0x4F)への呼び出しで新しいプロセスを開始します。

Windows Internals の書籍では、このプロセスが非常に詳細に説明されています。

カーネルに指定されたフックがあり、実行可能でないドライバーを作成できるかどうかはわかりません。以前は、 「システム サービス ディスパッチ テーブル」をフックして、これらのシステム コールの動作を変更することができました。しかし現在では、PatchGuardのようなテクノロジにより、ドライバーがこれを実行するのを防ぎます (そして、システムの実行を許可します)。

于 2013-03-15T05:03:12.450 に答える