カーネルへのパッチ適用とドライバの作成の違いを理解しようとしています。カーネルモードとドライバの相違点
カーネルモードのドライバは、カーネルができることは何でもでき、Linuxモジュールといくつかの点で似ています。
なぜAVメーカはupsetだったのですか?MicrosoftがWindowsカーネルにパッチを当てるのをやめたのはなぜですか?
ドライバではできないカーネルパッチを使ってどのようなことができますか?
カーネルへのパッチ適用とドライバの作成の違いを理解しようとしています。カーネルモードとドライバの相違点
カーネルモードのドライバは、カーネルができることは何でもでき、Linuxモジュールといくつかの点で似ています。
なぜAVメーカはupsetだったのですか?MicrosoftがWindowsカーネルにパッチを当てるのをやめたのはなぜですか?
ドライバではできないカーネルパッチを使ってどのようなことができますか?
この文脈では、カーネルにパッチを当てるということは、いくつかの機能を達成するために、(ファイルを開くなどの)さまざまな機能をフックするために内部構造を修正することを意味します。あなたは、あなたのものではない内部のカーネル構造を混乱させてはなりません。これまでマイクロソフトはいくつかの点で公式のフックを提供していなかったため、セキュリティ会社は内部をリバースエンジニアリングし、カーネルを直接引き付けました。最近、マイクロソフトはいくつかの事柄について公式のフックを提供しているので、カーネルを直接フックする必要性はそれほど強くない。
カーネルモードのドライバは、カーネルができることは何でもできます。結局、両方ともリング0で動作します。ここで重要なのは、の難しさですか?パッチを適用することは、異なるカーネルリリース間で変更される内部の詳細に依存します。たとえば、システムコール番号NtTerminateProcess
はバージョン間で変更されるため、SSDTをフックするドライバはバージョン間で切断されます(ただし、システムコール番号は他の手段で取得できます)。 EPROCESS
やETHREAD
などの内部構造のフィールドを読み込んだり修正したりするのは危険でもあります。これもまた、これらの構造がバージョン間で変更されるためです。ドライバーにとってこれは不可能ではありませんが、難しいです。
フックするための公式のインターフェイスが提供されている場合、マイクロソフトはバージョン間の互換性を保証し、誰が何を行うことができるかを制御することができます(たとえば、署名付きドライバのみがオブジェクトマネージャのコールバックを使用できます)。しかし、ドライバが知るべきではない実装の詳細なものもあるので、Microsoftはのすべてをにすることはできません。
なぜ、シマンテックとマカフィーは、カーネルにフックできないことになったのですか? – Jim