这一章讲的有点多,与很多RK技术相关的也不少.
具体来分析的话,想详细的剖析下以下知识点
1.系统机制:
@ IDT
@ GDT
@ SSDT
@ Shadow SSDT
@ 增加一个系统服务分发
上面这些,包括一些HOOK技术,可能都显得很古老了,但是真正剖析和理解清楚,还是需要下一番功夫的.
2.windows对象管理详解
3.WinObj的设计与实现
4.句柄表剖析.
@@ IDT 检测
关于IDT_Hook技术可以参考,combaojiang大侠的rootkit的专题,那里已经讲的很详细了.
对于检测IDT_Hook:(其他HOOK检测也类似)
1.因为IDT的ISR地址位于ntoskrnl.exe和hal.dll中,可以通过比较模块基地址和大小,来判断.
2.dump&disk
2.1_KPCR结构中是有一份记录的:
kd> dt 82b7bc00 _KPCR -y IDT*
ntdll!_KPCR
+0x038 IDT : 0x80b95400 _KIDTENTRY
kd> r idtr
idtr=80b95400
如果HOOK程序没有改这里,那么是可能找到的,其实就是fs:0x38的位置:
kd> dd fs:38 l1
0030:00000038 80b95400
2.2 如果代码 Hook 了,可以自己 Map 内核,搜索 IDT 特征,之所以特征搜索是因为特征太明显了,可以精准对比 ExtendedOffset、Selector 等。
类似的方法可用于搜索 KiServiceTable。而不是用那什么“A more stable way to locate real KiServiceTable”。
代码后期贴上...
ps下:一个IDTguard的程序..呵呵~附带源代码的,讲述的就是2.2思路的实现...
|