首页
社区
课程
招聘
[原创]Hook ObReferenceObjectByHandle的另一种框架
发表于: 2009-8-7 22:28 7988

[原创]Hook ObReferenceObjectByHandle的另一种框架

2009-8-7 22:28
7988

看到过几次hook ObReferenceObjectByHandle的代码,总感觉过程非常纠结,不停hook了又恢复,恢复了又hook,在几个函数间来回跳。
今天下午尝试写了个不那么纠结的框架,跟大家分享:
(练手作品,有错误的地方请大家指点)


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (10)
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
2
用汇编写这么多,很累啊.
呵呵.
2009-8-7 22:38
0
雪    币: 462
活跃值: (53)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
3
这段代码好像是直接从Rootkit.Goldun中拿出来的
2009-8-7 22:47
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
4
_declspec (naked) void FakeReferenceObjectByHandle(){
        _asm{
                push [esp+0x18]                        //参数压栈
                push [esp+0x18]
                push [esp+0x18]
                push [esp+0x18]
                push [esp+0x18]
                push [esp+0x18]
                push fakeeip                        //压入假的返回地址

                mov edi,edi                                //ObReferenceObjectByHandle的前5个字节
                push ebp
                mov ebp,esp

                mov eax,ObReferenceObjectByHandle
                add eax,5
                jmp eax                                //跳到ObReferenceObjectByHandle去执行
        
fakeeip:
这跟sysdog另一帖的流程:
_declspec (naked) NTSTATUS OriginalObReferenceObjectByHandle(IN HANDLE  Handle,
                                                                                                                 IN ACCESS_MASK  DesiredAccess,
                                                                                                                 IN POBJECT_TYPE  ObjectType  OPTIONAL,
                                                                                                                 IN KPROCESSOR_MODE  AccessMode,
                                                                                                                 OUT PVOID  *Object,
                                                                                                                 OUT POBJECT_HANDLE_INFORMATION  HandleInformation  OPTIONAL)
{
        _asm
        {   
                    mov edi,edi
                        push ebp
                        mov ebp,esp

                        mov eax,ObReferenceObjectByHandle
                        add eax,5
                        jmp eax                
        }
        
}

NTSTATUS DetourMyObReferenceObjectByHandle(
                                                                           IN HANDLE  Handle,
                                                                           IN ACCESS_MASK  DesiredAccess,
                                                                           IN POBJECT_TYPE  ObjectType  OPTIONAL,
                                                                           IN KPROCESSOR_MODE  AccessMode,
                                                                           OUT PVOID  *Object,
                                                                           OUT POBJECT_HANDLE_INFORMATION  HandleInformation  OPTIONAL)
{
        NTSTATUS status;
        //调用原函数
        status=OriginalObReferenceObjectByHandle(Handle,DesiredAccess,ObjectType,AccessMode,Object,HandleInformation);
其实是一回事,而楼主这样写搞了大量内嵌汇编,看起来好像汇编玩得不错,但是与sysdog这个写法相比之下,楼主的就显得太矫情了,何必呢……
2009-8-7 22:57
0
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=轩辕小聪;667881]_declspec (naked) void FakeReferenceObjectByHandle(){
        _asm{
                push [esp+0x18]                        //参数压栈
                p...[/QUOTE]

呵呵,练手而已,想试试只有一个fake函数,不在多个函数中跳,而且整个过程不恢复hook~
另外ObReferenceObjectByHandle函数被系统调用极为频繁,这样处理对系统效率影响小一些

另:sysdog那一贴所说的耗死CPU的原因找到了吗?
2009-8-7 23:51
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
都是高手,我只是看看不说话。
2009-8-7 23:58
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
7
小聪的处理不错
2009-8-8 19:24
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
8
不使用hook 引擎?
2009-12-29 01:54
0
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
9
自己写的……和Rootkit.Goldun中的一样吗?还没看过Rootkit.Goldun
2009-12-29 08:43
0
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
10
主要是为了效率啦,这个函数系统调用很频繁的……
2009-12-29 08:44
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
11
我也hook了这个函数,xp ,2003就没有蓝过
2009-12-29 14:48
0
游客
登录 | 注册 方可回帖
返回
//