其实,道理上说,的确,创建一个文件,是要有打开文件的这个过程的,
但是不知道为什么,我这里根本拦截不到打开文件的这个过程。
举个例子,
前面初始化了Minifilter,然后注册了两个回调,进程创建回调和镜像加载回调
红色部分为进程创建回调,其实进程创建回调被触发的时候,第一个镜像就已经被加载起来了,
但是我不明白,为什么,第一个镜像加载回调会在进程创建回调后面触发
子进程PID为344,进程创建回调触发之后,直接触发的镜像加载回调,Minifilter根本没有拦截到Create这个exe文件的操作
紫色框部分为镜像加载回调
绿色框部分为minifilter的Create回调,上面的一行为
Pre ,下面一行为Post,
根本就没有拦截到 exe 的操作,我不明白,为什么我这里会这样。
我的测试环境是Windows XP
sp3 x86 ,内核版本 NT5.1 WDK版本2600
我很想知道,这东西到底是根本没Create,还是怎样了,但是今天先看了一下
CreateProcess 源码,大致是
BasepMapFile 这个函数把它们映射到内存的,而这个函数里面调用了2个函数 NtOpenfile
和 NtCreateSection ,第一个函数就是 Create
(我没找到 IRP_MJ_OPEN 阿 , 0x00 是
IRP_MJ_CREATE)
所以我很纳闷,不过不管怎么说,就是这么回事,minifilter抓不到