web-dev-qa-db-ja.com

再起動せずにプロセスモニタードライバーをアンロードするにはどうすればよいですか?

ソフトウェアのデバッグに Process Monitor を使用したり、オンラインでゲームをプレイしたりすることもあります。これらのゲームの一部は BattlEye アンチチートソフトウェアを使用しており、システムでProcess Monitorが起動した後にゲームを実行することを拒否し、これをログに表示します。

08:06:46: Starting BattlEye Service...

08:06:49: Launching game...
08:07:07: Disallowed driver: "\??\C:\Windows\system32\Drivers\PROCMON23.SYS". Please unload it or reboot your system.

ドライバーはプロセスモニターを閉じた後もロードされたままで、アンロードするオプションがないようです。

他のいくつかの質問には、net stopまたはsc stopを使用したドライバーのアンロードに関する回答がありますが、ProcMonドライバーはサービスではないため、これは機能しません。デバイスマネージャーで[非表示のデバイスの表示]を有効にしてみましたが、ProcMonに関連するエントリは表示されません。ドライバーファイルは実際にはファイルシステムに存在しないため、削除できません。 ProcMonはファイルを実行可能ファイルに保存し、必要に応じて抽出します。

私の質問は この質問 の重複ではありません。これは、再起動後もドライバが保持される同様の問題に関するものです。私の質問は、再起動せずにドライバーをアンロードすることです。

7
James

標準ドライバーサービスであり、netおよびscを介して実際にそれらを制御できます。 (たとえば、sc query beep –「ビープ音」ドライバを停止することは、内蔵PCスピーカーをシャットダウンする一般的な方法です。)

以前のプロセスモニターバージョン(おそらく2.3より前、Windowsがまだある場合XPサポート)、それはだった「レガシー」デバイスドライバーをインストールしますsc、デバイスマネージャなどを介して表示.


プロセスモニターの現在のバージョンは、ドライバーを起動した直後にレジストリからドライバー/サービス構成を削除するようです。これは ProcMon自体を監視する で確認できます。タイプ2(カーネルFSドライバー))を使用して、サービスを手動で再追加することが可能で、すぐにすでに実行中と表示されます。

ただし、サービスは「NOT_STOPPABLE」も報告し、停止の試行を拒否します。

さらに、PROCMON23は、フィルターマネージャー(FltDrv)を介してfilesystem minifilterドライバーとして自分自身を登録するようになりました。 fltmcの出力で確認できますが、外部からアンロードしようとしても失敗します(おそらく、ドライバーにアンロードルーチンがないためです)。

 C:\ WINDOWS\system32> fltmc 
 
フィルター名Num Instances Altitude Frame 
 ---------------- -------------- ------------- ------------ ----- 
 PROCMON23 0 385200 0 
 WdFilter 4 328010 0 
 storqosflt 0 244000 0 
 wcifs 1 189900 0 
 ... 
 
 C:\WINDOWS\system32> fltmc unload PROCMON23 
 
アンロードが次のエラーで失敗しました:0x801f0010 
この時点でボリュームからフィルターを切り離さないでください。

「公式の」CLIツールはFltMgrからフィルターを削除できず、FltMgritselfは再起動しないと再起動できない「重要な」ドライバーであるため、 PROCMON23またはPROCMON24をアンロードする方法はないようです。


しかし、最も興味深い部分:procmon 3.40で上記のチェックを行った後、Webサイトの最新バージョンは3.50(新しいPROCMON24ドライバーを使用)であることがわかりました。新しいバージョンを開始すると、古いバージョンのドライバーが既にシステム上にあり、再起動する必要があることが通知されました。

したがって、ProcMonitselfが再起動せずに独自のドライバーをアンロードできない場合、アンロードすることもできないと考えて間違いないと思います。

5
user1686

問題のあるPROCMON23.SYSフィルタードライバーは、実行時にProcMonによってインストールされます。ファイルC:\Windows\system32\Drivers\PROCMON23.SYSはその時点では存在しないので、ProcMonが書き込みます。 PROCMON23.SYSファイル自体は、ProcMonの実行可能ファイル内にバイナリリソースとして含まれています。

次の方法で、実行中のすべてのフィルタードライバーを一覧表示できます。

fltmc filters

そして私のコンピュータではこれは次のようになります:

image

ご覧のとおり、私のバージョンのProcess Monitorはあなたのバージョンより新しいです(23ではなく24)。

通常、フィルタードライバーは次のようなコマンドでアンインストールできます。

Fltmc unload PROCMON24

ただし、この場合は、コマンドプロンプトが昇格します。

image2

アンロードエラー0x801f0010は、アンロードルーチンを持たないミニフィルタードライバーの一般的なエラーです。

結論:PROCMON23.SYSおよびそれ以降のPROCMON24.SYSは正しくプログラムされていません。開発者は、だれもが自分のドライバをアンロードすることを望み、必要なルーチンをそれに含まないことを予測していません。したがって、このドライバーはアンロードできません。

あなたにとっての悪いニュースは、それを処分するために再起動が必要であるということです、他には何も仕事をしません。あなたの唯一の手段は、開発者に文句を言うことです。

2
harrymc