QQ游戏系列(寻仙,DNF等等)驱动保护TesSafe.sys &V~l(1
1.用RKU看一下SSDT和SSDTShadow,发现SSDT并没有被HOOK,SSDTShadow HOOK了5个调用: !dGu0wE
NtUserBuildHwndList kD;pj3o&"2
NtUserFindWindowEx $57b. +2n
NtUserGetDC *n E kbI/
NtUserGetDCEx ,I5SAd|dX
NtUserGetForegroundWindow rqmb<# Z
想也不用想,肯定是为了防止其他软件找到他的窗口。 4RtAwB
解决方法:在TesSafe加载前先加载自己的驱动,备份这5个调用的地址,等TesSafe加载后直接还原即可,或者直接用RKU还原,TesSafe并没有在这里加效验,所以比较容易。 0]
2.既然SSDT没有没HOOK,那么肯定有inline hook,用windbg看一下,发现被inline hook的调用有如下几个: RM `qC
NtReadVirtualMemory _,T 4DS6
NtWriteVirtualMemory ;mk[!
NtOpenProcess + 0x2xx Call ObOpenObjectByPointer处 i}DS+~8v
NtOpenThread + 0x1xx Call ObOpenObjectByPointer处 '{jr9Vh
KiAttachProcess l^Rb%?4Z
解决方法: tWIJ,_8l
(1). //FT.e6
NtReadVirtualMemory )|lxzlk
NtWriteVirtualMemory _2!8,MX
这2个比较好解决,自己写2个调用,实现这2个调用的头10个字节,然后再跳转到这2个调用头10个字节后面的地址,再到SSDT表里把这2个调用地址改成我们自己的即可。 22CET9iCe
(2). Zj_2>A
NtOpenProcess + 0x2xx Tf86CH=)5
NtOpenThread + 0x1xx P"Al*{:J
在TesSafe加载前,先保存ObOpenObjectByPointer的地址(或者用MmGetSystemRoutineAddress获取),然后我们自己写一段代码,实现Call ObOpenObjectByPointer头N个字节(随便自己)以及Call ObOpenObjectByPointer,然后再jmp到Call ObOpenObjectByPointer后面的代码地址,如: -BSdrP|
push eax +P2oQ_Fk`9
QQ游戏系列(寻仙,DNF等等)驱动保护TesSafe.sys
最新推荐文章于 2022-09-14 16:06:14 发布