越来越感觉科技树点歪了
注册表回调保护对抗
-
可以得到所有回调的
cookie信息,从而进行对抗。 -
通过
MmGetSystenRoutineAddross找到CmUnRegisterCallback的位置,解析保存的回调函数链表做patch。 -
找到全局保存的当前注册表的回调值,直接清空。
对象回调保护对抗
-
可以得到所有回调的
handle信息,从而进行对抗。 -
通过
MmGetSystenRoutineAddross找到ObUnRegisterCallbacks的位置,解析保存的回调函数链表到回调函数做patch。 -
从这里
1
obReg.ObjectType = PsProcessType; //注册进程的回调
解析
_OBJECT_TYPE的CallbackList1
2
3
4
5
6
7
8
9
10
11
12+0x000 TypeList : _LIST_ENTRY
+0x010 Name : _UNICODE_STRING
+0x020 DefaultObject : Ptr64 Void
+0x028 Index : UChar
+0x02c TotalNumberOfObjects : Uint4B
+0x030 TotalNumberOfHandles : Uint4B
+0x034 HighWaterNumberOfObjects : Uint4B
+0x038 HighWaterNumberOfHandles : Uint4B
+0x040 TypeInfo : _OBJECT_TYPE_INITIALIZER
+0x0b8 TypeLock : _EX_PUSH_LOCK
+0x0c0 Key : Uint4B
+0x0c8 CallbackList : _LIST_ENTRY而且
PsProcessType是一个全局的地址,所以对抗的驱动依旧能够找到(有点像d3d hook中找到SetPresent的方法)