Tesla.Angela 发表于 2011-7-31 22:10:41

有谁hook过KeBugCheckEx的?

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

ywledoc 发表于 2011-8-1 10:35:16

为什么不直接搞搞sys呢?说不定NV就把你拉过去做他们驱动的开发了。

Tesla.Angela 发表于 2011-8-1 16:28:01

naylon 发表于 2011-8-1 16:15 static/image/common/back.gif
直接返回肯定不行吧,因为原本的程序假定KeBugCheckEx不会返回了,所以根本没有处理返回后的情况,所以直接 ...

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

KindOf 发表于 2011-8-1 17:14:38

Tesla.Angela 发表于 2011-8-1 16:28 static/image/common/back.gif
等待是小问题,大问题是这个死线程狂占CPU。。。
另外曾经听小力说冰刃是用hook kebugcheckex来判断地址 ...

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

不过paper觉得直接KILL掉后可能有问题,后来就JMP回起始地址。

Tesla.Angela 发表于 2011-8-1 18:26:07

KindOf 发表于 2011-8-1 17:14 static/image/common/back.gif
TA,你忘记了啊?记得我们说过那啥 bypass pageguard的paper。
里面不就是HOOK这个函数,然后KILL掉这个 ...

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

Tesla.Angela 发表于 2011-8-1 18:29:26

naylon 发表于 2011-8-1 18:03 static/image/common/back.gif
表示不信。。。

不管你信不信!反正我信了!见:
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

Tesla.Angela 发表于 2011-8-2 00:25:48

本网站最菜的人 发表于 2011-8-1 20:24 static/image/common/back.gif
我以前文章里貌似说过了,创建一个EVENT,然后无限等待,然后线程就死在那儿,也就不会被调度了, 不占CPU: ...

感谢您的建议!

KindOf 发表于 2011-8-2 09:55:38

Tesla.Angela 发表于 2011-8-1 18:26 static/image/common/back.gif
额???我啥时候跟你说过话???
我的fxxk PG是在bugcheck里死循环,但问题是cpu占用率有50%!!!

。。。

那你再看下那个paper.里面就说到 如果是由于PG而蓝屏的话,BSOD的error code是一个特殊值,然后就可以进行判断处理

本网站最菜的人 发表于 2011-8-2 20:32:10

Tesla.Angela 发表于 2011-8-2 21:06:59

本网站最菜的人 发表于 2011-8-2 20:32 static/image/common/back.gif
如果成功的话记得给我添加核心会员呵~

这是木有问题的。。。
不过麻烦你提供一下源代码,至少是核心源码。。。

本网站最菜的人 发表于 2011-8-2 21:48:31

Tesla.Angela 发表于 2011-8-2 22:26:21

本网站最菜的人 发表于 2011-8-2 21:48 static/image/common/back.gif
您自己实现一下吧,我对WIN7 X64一无所知。。。
PS:我目前除了玩游戏都不用WINDOWS了。。。

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

Tesla.Angela 发表于 2011-8-3 15:54:53

本网站最菜的人 发表于 2011-8-2 21:48 static/image/common/back.gif
您自己实现一下吧,我对WIN7 X64一无所知。。。
PS:我目前除了玩游戏都不用WINDOWS了。。。

根据你的建议,今天花了1分钟写了代码,成功了。。。
//tested in XP x86 and WIN7 x86
KeWaitForSingleObject(System进程的EPROCESS, Executive, KernelMode, FALSE, NULL);

wenh7788 发表于 2012-3-13 14:35:12

老大你这个成功的概念是什么?是不会蓝屏还是怎么样?

watchsky 发表于 2012-3-22 15:54:29

http://www.uninformed.org/?v=3&a=3&t=pdf

x64asm 发表于 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
页: [1]
查看完整版本: 有谁hook过KeBugCheckEx的?