首页
社区
课程
招聘
[原创]某安全卫士的内核hook
发表于: 2011-11-25 20:04 51765

[原创]某安全卫士的内核hook

2011-11-25 20:04
51765
思路:
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成功!" ) );
        }

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (58)
雪    币: 3110
活跃值: (1254)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
2
楼主火星了。。
2011-11-25 20:54
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
3

没怎么在论坛里混,最近打算自己研究些东西,就当是笔记,,呵呵
2011-11-25 21:49
0
雪    币: 133
活跃值: (587)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
360的HookPort驱动。。。。。
2011-11-26 14:00
0
雪    币: 2177
活跃值: (2045)
能力值: (RANK:400 )
在线值:
发帖
回帖
粉丝
5
N年前就被逆烂了..
2011-11-26 14:17
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
6
别人逆过它是别人的事
我研究它是我的事。。。。
2011-11-27 01:05
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
7
实习版主也是版主,不能说带有轻蔑语气的话。
2011-11-27 09:51
0
雪    币: 165
活跃值: (1431)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
地球人都知道的事情...
2011-11-27 10:16
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
过来顶一个,支持楼主走自己的路
2011-11-27 10:23
0
雪    币: 29
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
LZ,我支持你 一个 ,很好 。
2011-11-27 10:44
0
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
LZ我**,学习是从基础开始的
2011-11-27 10:54
0
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
就是,不能打击菜鸟的积极性,毕竟是大家共同维护的地方,看雪论坛就似我的一日三餐,少不得。
2011-11-28 09:55
0
雪    币: 579
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
好文。支持楼主。
2011-11-28 15:33
0
雪    币: 544
活跃值: (264)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
14
精华不在于此
2011-11-28 16:09
0
雪    币: 181
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
真好 ..
2011-11-28 16:21
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
16

谢谢各位的支持
我只是分享下我的东西,希望能帮助到大家。
另外,别人逆的都是以前的版本,跟现在的版本多半会有所不同(很显然,360很s13,这么久都没变过);
还有,自己逆一遍肯定收获会更多,
所以必须自己搞。。。

其实逆向真的很简单,把它当作工具就好了,我只会点儿汇编都能逆出来。呵呵
2011-11-28 16:24
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
<<<<<
优点:坚决不修改ssdt和内核模块中的数据,使得一般的工具软件无法检查出hook信息,也避免了和其他软件的不兼容性。
详细情况,请看图:
>>>>>

我想他已经修改了内核模块数据

其实使用 HOOK THREAD SSDT 会更加隐蔽  

并且本人软件使用过该方法了 兼容性 稳定性都可以
2011-11-28 16:41
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
18
ls的,代码搞出来撒,
2011-11-28 16:45
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
19
没有看到它修改内核模块数据

我现正在偷窥360的各个功能,感觉很良好哈,

2011-11-28 16:47
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
kifastcall 不是内核模块中的?

再就是如此明显的HOOK  任何 ark工具一搜就到

HOOK THREAD 就不公布源码了  因为本人软件正使用中(商业版)  可以给提示

看thread结构

之前网络上看到过 关于这方面的介绍但没见到过源码  

不过网络上提供的思路是 修改thread里面的 ssdt指针  但是却缺少了最重要的一点   
就是kifastcall里面线程 ssdt指针与 shadow指针 的转换  很要命这点克服就可以OK了

可以将整个kifastcall 逆向一下分析看看就会发现其实ssdt表的获取并非通过KeServiceDescriptorTable

此方法做到不修改任何内核原始数据  并且可以指定某个进程线程的 SSDT恢复&HOOK
2011-11-28 17:16
0
雪    币: 86
活跃值: (1043)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
我是绝对支持开源的,楼主,俺们支持你
2011-11-28 17:49
0
雪    币: 405
活跃值: (2150)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
该 方法 在ROOTKIT.COM被人提及过,属于DKOM ,替换ETHREAD表里的SSDT表,思路不错,不过一样受到360hook的限制。
2011-11-28 18:55
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
嗯确实  其实安全软件的控制 仅限于 没有进入内核之前 如果可以的话只要木马或是黑客 可以进入R0

那杀软的很多功能将会失效 并且很轻易就可以kill掉。就比如绕ssdt  

所以我感觉杀毒其实更应该叫做防毒软件   因为病毒一旦能够进入,说明早已做好了充足准备

尤其是能在杀毒软件开启的状态下

其实想想那些每天挖漏洞过安软的牛人 就由心的对其“孜孜不倦”的钻研精神佩服有加

(不知道是不是完全的利益驱使)
2011-11-29 02:01
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
以前看代码的时候,也有过这种想法

没想到的是真的可以实现啊

佩服佩服
2011-11-29 03:59
0
雪    币: 4558
活跃值: (1277)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
支持楼主。写得非常好
2011-11-29 05:53
0
游客
登录 | 注册 方可回帖
返回
//