C++ 如何在筛选器驱动程序中读取当前进程的PE头

C++ 如何在筛选器驱动程序中读取当前进程的PE头,c++,c,process,driver,filter-driver,C++,C,Process,Driver,Filter Driver,我调用PsGetCurrentProcess以获得PEPROCESS结构,如何在内核模式下读取进程的PE头,类似于在用户模式下读取的代码? 我的目标是从PE标题中获取版本信息。我建议在创建流程时获取此信息。您可以使用PsSetCreateProcessNotifyRoutine(Ex)在创建新进程时收到通知PsSetLoadImageNotifyRoutine在PE文件(包括进程的主可执行文件)映射到虚拟地址空间时通知您 当进程完全初始化并运行时,从进程内存中读取版本信息是个坏主意。进程可以完全

我调用
PsGetCurrentProcess
以获得
PEPROCESS
结构,如何在内核模式下读取进程的PE头,类似于在用户模式下读取的代码?
我的目标是从PE标题中获取版本信息。

我建议在创建流程时获取此信息。您可以使用
PsSetCreateProcessNotifyRoutine(Ex)
在创建新进程时收到通知
PsSetLoadImageNotifyRoutine
在PE文件(包括进程的主可执行文件)映射到虚拟地址空间时通知您


当进程完全初始化并运行时,从进程内存中读取版本信息是个坏主意。进程可以完全控制其PE文件映射,因此可以伪造版本信息。此外,您只能在低IRQL(被动_级别)下访问用户模式内存。Minifilter回调也可以在APC\u级别/DISPATCH\u级别调用。

非常感谢,如果是,我如何获取版本信息?我问了这个问题,但仍然没有得到答案,如果你能帮助我,我将不胜感激。