hookport中的自我保护

2010-8-9 Nie.Meining Debug

今天无聊,看了下hookport中的自我保护部分。
360在KiFastCallEntry+0xe5的位置进行了hook,并且是两段跳,如图:
点击查看原图
360在DriverEntry的最后调用sub_18FB2()函数对hook点的第一段跳进行保护,sub_18FB2代码如图:
点击查看原图
在sub_18FB2中,找准hook点的位置(KiFastCallEntry+0xe5)和跳转地址后,调用StartSelfProtect()函数,StartSelfProtect()函数中部分代码如下:
点击查看原图
在StartSelfProtect()函数中,将自我保护的检测代码selfcheck注册到CmRegisterCallBack中了。我以前还以为360会单独开一个系统线程来定时检测(另外,在sub_16BCA中调用了一个很有用的函数:RtlImageDirectoryEntryToData(),记录一下)。
selfcheck的代码很简单:
点击查看原图
如果hook点(KiFastCallEntry+0xe5)的指令不是jmp,或者jmp的地址不对,则调用SelfProtect()进行自我修复,重新hook回来:
点击查看原图

评论:

菜b
2013-07-28 02:37
你这个 很强哦

发表评论:

Powered by emlog