360内核 inline Hook 分析

  

今天下载了360的最新的版本,想看下最近360在内核的钩子与以前有没有变化!

与以前一样还是通过分析找到360下钩子的地方。结果发现与以前没有什么变化。


Hook之前:

kd> u nt!KiFastCallEntry+0xe1
nt!KiFastCallEntry+0xe1:
8053e621 2be1            sub     esp,ecx
8053e623 c1e902          shr     ecx,2
8053e626 8bfc            mov     edi,esp
8053e628 3b35d4995580    cmp     esi,dword ptr [nt!MmUserProbeAddress (805599d4)]


Hook之后:

kd> u 8053E621
nt!KiFastCallEntry+0xe1:
8053e621 e90abbca01      jmp     821ea130

8053e626 8bfc            mov edi,esp
8053e628 3b35d4995580    cmp esi,dword ptr [nt!MmUserProbeAddress (805599d4)]

360还是inline hook nt!KiFastCallEntry+0xe1 这个地方!


 

 

不过,我们不能直接恢复这个钩子,因为360的驱动Hookport.sys会对这个钩子进行保护

我们需要把这保护的地方也打掉才行!
通过简单的分析我们知道具体的检查的函数是在:

kd> u f86b4354
Hookport+0xa354:

f86b4354 a184576bf8      mov     eax,dword ptr [Hookport+0xb784 (f86b5784)]
f86b4359 8038e9          cmp     byte ptr [eax],0E9h
f86b435c 750b            jne     Hookport+0xa369 (f86b4369)
f86b435e 8b4001          mov     eax,dword ptr [eax+1]
f86b4361 3b0574576bf8    cmp     eax,dword ptr [Hookport+0xb774 (f86b5774)]
f86b4367 7405            je      Hookport+0xa36e (f86b436e)
f86b4369 e894ffffff      call    Hookport+0xa302 (f86b4302)
f86b436e 33c0            xor     eax,eax
f86b4370 c20c00          ret     0Ch

 

这个函数很简单比较了第一个字节是不是等于0xE9和后面的4个字节是不是等于0x01cabb0a;

我就直接让这个函数返回

kd> eb f86b4354 c2 0c 00

 

现在我们再恢复刚才被Hook的地方

eb 8053e621 2b e1 c1 e9 02

 

到这儿360在内核的Hook被恢复了!我们看一下360在界面上的变化:

 

Untitled

 

不过总体感觉360比以前有进步了!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2011-04-19 00:18  Russinovich`s Blog  阅读(2969)  评论(5编辑  收藏  举报