文件名称:driver
介绍说明--下载内容均来自于网络,请自行研究使用
1:将内核文件映射到我内核空间去;
2:path KiFastCallEntry重定向
一:加载内核
1:关于加载
我代码里用了两种方法,一种被我注释了的:
a:使用ZwCreateSection + ZwMapVieOfSection 结合 SEC_IMAGE 标志来加载,此时加载的地址必定是位于user-mode空间,可以简单的用MDL锁定,然后映射这些页面到kernel-mode空间,也可以直接ExAllocatePool 然后 copy加载的镜像
b : 直接ReadFile啦,对PE格式了解点点,很简单的,不多说,看代码吧
2:关于修正镜像
1:重定位
这个是必须的,但是要注意,必须以原先系统的内核为基址重定位,因为你想自己初始化一些东西如对象头,调度链之类的已经不可能了,你必须让新内核的数据指向老内核
2:修正SDT
这个不需要多说,算算RVA,四则运算一做就好啦-1: to map the kernel file to my kernel space to 2: path KiFastCallEntry redirection
2:path KiFastCallEntry重定向
一:加载内核
1:关于加载
我代码里用了两种方法,一种被我注释了的:
a:使用ZwCreateSection + ZwMapVieOfSection 结合 SEC_IMAGE 标志来加载,此时加载的地址必定是位于user-mode空间,可以简单的用MDL锁定,然后映射这些页面到kernel-mode空间,也可以直接ExAllocatePool 然后 copy加载的镜像
b : 直接ReadFile啦,对PE格式了解点点,很简单的,不多说,看代码吧
2:关于修正镜像
1:重定位
这个是必须的,但是要注意,必须以原先系统的内核为基址重定位,因为你想自己初始化一些东西如对象头,调度链之类的已经不可能了,你必须让新内核的数据指向老内核
2:修正SDT
这个不需要多说,算算RVA,四则运算一做就好啦-1: to map the kernel file to my kernel space to 2: path KiFastCallEntry redirection
(系统自动生成,下载前可以参看下载内容)
下载文件列表
src\CommonFunc.c
...\CommonFunc.h
...\DrvEntry.c
...\KrnlLdr.c
...\KrnlLdr.h
...\makefile
...\ntimage.h
...\sources
...\Verify.c
...\Verify.h
src