マルウェアのようなターゲットプロセスを検出し、監視するためにハイパーバイザーをLinux上で作成したいと考えています。
これを達成するには、ハイパーバイザーが、作成または終了されたプロセスまたはタスクが切り替えられたプロセスを検出する必要があります。ハイパーバイザーを使用して、ターゲットプロセスが作成または終了された時間を監視する方法
intel CPU上で、私はcr3レジスタがそれらの役割を示していることを知っていました。
たとえば、cr3レジスタの値が変更された場合、vmexit
が発生します。そして、実行されたプロセスが変更されることを意味します(タスクスイッチまたはプロセスの作成)。
私の目標を達成するために、私はこのメカニズムが非常に使いやすいと思った。
しかし、作成されたプロセスと終了したプロセスを検出するには、cr3の値が変更されたためにvmexit
のときにtask_structをスキャンする必要があります。
特に、task_structをターゲットプロセスリストと比較すると、終了プロセスをターゲットプロセスリストから検出して削除できます。
私にベストプラクティスを教えてもらえますか、私のようなOSSを教えてください。 Windowsでは
、私はPsSetCreateProcessNotifyRoutine
APIを使用することができるだろうが....