C++ 监视内核注册表更改

C++ 监视内核注册表更改,c++,windows,winapi,registry,kernel,C++,Windows,Winapi,Registry,Kernel,人们能不能给我一些建议(没有双关语的意思),让我了解为了能够做到这一点,我需要研究的主题?我不是一个真正的Windows专家,但是我很快就学会了新概念 我看到了Mark Russinovich和Bryce Cogswell写的过程监控程序: 它可以查看内核中发生的一切。在过去,我可以使用C#和用户级注册表访问来完成这类工作,但我无法使用从codeproject获得的包装套件访问内核 人们能帮我确定我该从哪里开始吗?我想我需要更多关于Windows/OS方面的帮助。 这样做的原因: (我更像ja

人们能不能给我一些建议(没有双关语的意思),让我了解为了能够做到这一点,我需要研究的主题?我不是一个真正的Windows专家,但是我很快就学会了新概念

我看到了Mark Russinovich和Bryce Cogswell写的过程监控程序:

它可以查看内核中发生的一切。在过去,我可以使用C#和用户级注册表访问来完成这类工作,但我无法使用从codeproject获得的包装套件访问内核

人们能帮我确定我该从哪里开始吗?我想我需要更多关于Windows/OS方面的帮助。

这样做的原因:
(我更像java,而不是C++程序员,但是我想进入后者。学习的最好方法是做一些对你感兴趣的事情,所以我对实时应用感兴趣,这是我能想到的最便宜的(不必支付数据)。)

编写内核模式驱动程序以拦截注册表读/写操作极其困难。如果您只想查看用户模式和内核模式注册表访问,最好的方法是通过实时ETW跟踪侦听器。有了它,您就可以获得所需的所有监控,而无需修改正在运行的内核。马克没有用这个,因为当时它还不存在,但现在我相信他会建议你用这个来代替。如果您熟悉Linux上的DTrace,那么ETW是Windows最接近的等价物(它的性能与DTrace一样,但没有用户友好或可编写脚本)


查看ETW简介,这里有一个与实时ETW消费者相关的问题:

对于内核模式,请查看


不过,我相信Process Monitor会对Windows函数使用事件跟踪;例如,请参见。

这里有几个指针:
0x3A28213A
0x63392C
0x7363682E
。很抱歉我无法抗拒。雷格蒙来源:也许在Vista出现之前很难,但现在已经不难了。在CmRegisterCallbackEx的帮助下,只需几行代码。()