思路:
1、自己分配一块内存,存放需要hook的函数地址。
2、从内核模块中读取相应内核函数的地址,然后存放在自己分配的内存中。
3、修改nt!KiFastCallEntry函数中的代码,使跳入自己的驱动模块中。
优点:坚决不修改ssdt和内核模块中的数据,使得一般的工具软件无法检查出hook信息,也避免了和其他软件的不兼容性。
详细情况,请看图:
正常状态
hook后
下面是如何解除360的hook,看图:
驱动在 explorer.rar 中,此驱动只在win7 32位下测试过,可用。
// 解除360的hook
if( !NT_SUCCESS( KillHookPort() ) )
{
KdPrint( ( "解除360的hook失败!" ) );
}
else
{
KdPrint( ( "解除360的hook成功!" ) );
}
- 标 题:某安全卫士的内核hook
- 作 者:guxinyi
- 时 间:2011-11-25 20:04:37
- 链 接:http://bbs.pediy.com/showthread.php?t=143364