找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 18766|回复: 16

有谁hook过KeBugCheckEx的?

 火... [复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-7-31 22:10:41 | 显示全部楼层 |阅读模式
hook住KeBugCheckEx真的能防止蓝屏吗?
最近NV显卡驱动nvlddmkm.sys总是导致蓝屏,搞得我心里烦啊。。。
蓝屏代码是0x116,由于这个不是什么致命的错误,所以我估计拦截BugCheck函数是可行的。。。
我的思路是在Fake_KeBugCheckEx里ret 20【经测试不可行】,大家也说说自己的看法。防蓝屏成功者,给予添加核心会员奖励。如果已经是核心会员,给予一定数额的人民币奖励(通过话费充值实现)。

47

主题

265

回帖

8

精华

核心会员

积分
10349
发表于 2011-8-1 10:35:16 | 显示全部楼层
为什么不直接搞搞sys呢?说不定NV就把你拉过去做他们驱动的开发了。

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-8-1 16:28:01 | 显示全部楼层
naylon 发表于 2011-8-1 16:15
直接返回肯定不行吧,因为原本的程序假定KeBugCheckEx不会返回了,所以根本没有处理返回后的情况,所以直接 ...

等待是小问题,大问题是这个死线程狂占CPU。。。
另外曾经听小力说冰刃是用hook kebugcheckex来判断地址有效性的。。。不知道PJF是怎么实现的。。。

2

主题

32

回帖

0

精华

铜牌会员

积分
287
发表于 2011-8-1 17:14:38 | 显示全部楼层
Tesla.Angela 发表于 2011-8-1 16:28
等待是小问题,大问题是这个死线程狂占CPU。。。
另外曾经听小力说冰刃是用hook kebugcheckex来判断地址 ...

TA,你忘记了啊?记得我们说过那啥 bypass pageguard的paper。
里面不就是HOOK这个函数,然后KILL掉这个线程吗?

不过paper觉得直接KILL掉后可能有问题,后来就JMP回起始地址。
http://hi.baidu.com/zhouws1011/blog

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-8-1 18:26:07 | 显示全部楼层
KindOf 发表于 2011-8-1 17:14
TA,你忘记了啊?记得我们说过那啥 bypass pageguard的paper。
里面不就是HOOK这个函数,然后KILL掉这个 ...

额???我啥时候跟你说过话???
我的fxxk PG是在bugcheck里死循环,但问题是cpu占用率有50%!!!

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-8-1 18:29:26 | 显示全部楼层
naylon 发表于 2011-8-1 18:03
表示不信。。。

不管你信不信!反正我信了!见:
http://www.baidu.com/s?wd=%B1%F9%C8%D0+hook+kebugcheckex
做个实验:
1.把进程设置为“结束就蓝屏”
2.用“任务管理器”结束,蓝屏
3.重复步骤1
4.用“冰刃”结束,不蓝屏
你去看看冰刃在fake_KeBugCheckEx里是怎么处理的,反正我没看明白。。。
本网站最菜的人 该用户已被删除
发表于 2011-8-1 20:24:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-8-2 00:25:48 | 显示全部楼层
本网站最菜的人 发表于 2011-8-1 20:24
我以前文章里貌似说过了,创建一个EVENT,然后无限等待,然后线程就死在那儿,也就不会被调度了, 不占CPU: ...

感谢您的建议!

2

主题

32

回帖

0

精华

铜牌会员

积分
287
发表于 2011-8-2 09:55:38 | 显示全部楼层
Tesla.Angela 发表于 2011-8-1 18:26
额???我啥时候跟你说过话???
我的fxxk PG是在bugcheck里死循环,但问题是cpu占用率有50%!!!

。。。

那你再看下那个paper.里面就说到 如果是由于PG而蓝屏的话,BSOD的error code是一个特殊值,然后就可以进行判断处理
http://hi.baidu.com/zhouws1011/blog
本网站最菜的人 该用户已被删除
发表于 2011-8-2 20:32:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-8-2 21:06:59 | 显示全部楼层
本网站最菜的人 发表于 2011-8-2 20:32
如果成功的话记得给我添加核心会员呵~

这是木有问题的。。。
不过麻烦你提供一下源代码,至少是核心源码。。。
本网站最菜的人 该用户已被删除
发表于 2011-8-2 21:48:31 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-8-2 22:26:21 | 显示全部楼层
本网站最菜的人 发表于 2011-8-2 21:48
您自己实现一下吧,我对WIN7 X64一无所知。。。
PS:我目前除了玩游戏都不用WINDOWS了。。。


给个X86的实现代码我吧,懒得写了,反正成功就给你进核心会员,说话算数。。。
如果代码是我自己写出来的,就只能给你加分了。。。
PS:除了玩游戏和必须用电脑做的事情,我一般不用电脑。

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-8-3 15:54:53 | 显示全部楼层
本网站最菜的人 发表于 2011-8-2 21:48
您自己实现一下吧,我对WIN7 X64一无所知。。。
PS:我目前除了玩游戏都不用WINDOWS了。。。


根据你的建议,今天花了1分钟写了代码,成功了。。。

  1. //tested in XP x86 and WIN7 x86
  2. KeWaitForSingleObject(System进程的EPROCESS, Executive, KernelMode, FALSE, NULL);
复制代码

17

主题

89

回帖

0

精华

铜牌会员

积分
250
发表于 2012-3-13 14:35:12 | 显示全部楼层
老大你这个成功的概念是什么?是不会蓝屏还是怎么样?

4

主题

183

回帖

3

精华

钻石会员

积分
4965
发表于 2012-3-22 15:54:29 | 显示全部楼层

1

主题

39

回帖

0

精华

铜牌会员

积分
299
发表于 2012-4-1 18:49:03 | 显示全部楼层
多年之前,有个垃圾软件,故意引起4和5代码的蓝屏,我做过拦截


HookKebugCheck                PROC        @dwBugCheckCode:DWORD
        .if @dwBugCheckCode==4 || @dwBugCheckCode==5
                if        DEBUG
                invoke DbgPrint,CRLFTXT("检测到蓝屏操作,蓝屏代码:%08X,此行为已经被驱动程序阻止!"),@dwBugCheckCode
                endif
                mov eax, STATUS_ACCESS_DENIED
                ret
        .endif
        ;模拟压入堆栈,否则会导致堆栈不平衡而无法返回,使用STDCALL调用约定
        ;push   ....                        ;压入参数n
        ;push   xxxx                        ;压入参数2
        ;push   zzzz                        ;压入参数1
       
       
        push        @dwBugCheckCode                ;压入参数1
        push        offset @F                ;压入返回地址,注意由于前面的5字节执行了函数帧创建操作,因此到跳转为至的所有指令绝对
                                        ;不可操作堆栈,也不可使用CALL指令,所有的压栈操作要在创建函数帧之前完成,且不能使用CALL
                                        ;这里最后压入返回地址,以便使得函数能得以返回

        RealKebugCheck        INLINE_HOOK_TAIL_EX        <,,lpKebugCheck,,INLINE_HOOK_HEAD_SIZE,,>
@@:
        ret
       
HookKebugCheck                ENDP
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表