原理
内核重载:对高2G .sys模块重新在内存复制一块。
步骤
例如:内核模块ntosktr.exe
<1> 申请内存,按内存对齐展开
<2> 根据重定位表修复全局变量
<3> 修复IAT表
前面文章有对dll进行写入内存操作,这个在高2G一样实现。
写入内存以后:
<1> 建立一个新的系统服务表
<2> (Hook KiFastCallEntry)—>因为进入0环以后 首先进入这个函数,通过这个函数取得原来得系统服务表指针,改为新建立得系统服务表指针即可
总结
这个缺陷很明显,只要在高2g搜索几个内核函数,如果存在二份,说明内核被重载。
自己需要什么内核函数,自己写驱动实现是最佳。
3环可以实现重新api,0环也可以重写内核API,然后通过中断方式,从3环—》跳到自己指定得内核地址就可以了