YLLEN

要去看埃菲尔铁塔的顶

欢迎关注本人微博:t.cn/RGSLVUk

内核重载

    内核重载,原理:主动加载 Windows 内核文件(ntkrnlpa.exe)文件,因为内核文件也是PE类型,所以以PE文件形式加载到内存, 同时修改重定位表,这样内核文件就在内存中了,结合Hook KiFastCallEntry, 可以重载进入内核的函数调用,使其筛选出符合规定的进程,转入新内核调用,这样就可以躲过了 SSDT HOOK 。

      1  加载PE文件到内存

                以PE文件要求的内存对齐方式加载到内存中。

     2   重定位表修复

                修改内存中的重定位表,重定位表本该若是系统加载PE文件,则由PE加载器来修改的,而用户加载时,则需要自己来修改。重定位表作用是防止由于加载基址发生变化时,程序依然可以根据该表找到正确变量地址。

     3   SSDT表重构

                因为拷贝来的SSDT表中地址依然是内核默认地址,所以需要 将“旧内核"的SSDT表中各项目 + (新内核基址 - 旧内核基址) 就行修正,然后填充到"新内核"中。


     4  Hook KiFastCallEntry

                所有处理完之后,就要Hook ring3到ring0的通路了,hook方法见上文所写的那样,

Hook之后,在过滤函数中 判断是否满足转入新内核条件,是的话就修改相应的 寄存器,

经过调试发现 WinXp 默认ebx,Win7默认edx ,所以将功能函数地址填充相应寄存器就行。




评论

© YLLEN | Powered by LOFTER