首页
社区
课程
招聘
[求助]Hook NtCreateProcessEx怎样做可以让系统不弹错误对话框呢?
发表于: 2009-2-11 16:35 7747

[求助]Hook NtCreateProcessEx怎样做可以让系统不弹错误对话框呢?

2009-2-11 16:35
7747
通过Hook NtCreateProcessEx监控系统进程,如果要阻止一个进程运行的话,一般是直接返回一个NTSTATUS错误码,但是这样做的话,如果通过双击打开一个被阻止的程序,系统会弹出一个错误对话框。请问高手,要怎样做才能使系统不弹这样的错误提示呢?

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

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
Hook一下MessageBox
2009-2-11 16:38
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这样做的话怎样判断弹出的是我们要屏蔽的消息呢?
2009-2-11 16:44
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
你可以取一下这个错误消息的特征做匹配嘛,或者在驱动中返回一个特别的错误码使得这个消息很容易辨认,或者xxxx…很多方法啊
2009-2-11 17:52
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
5
返回 0x80070000 就可以不弹错误框了
2009-2-11 18:01
0
雪    币: 140
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习ing。。
2009-2-11 18:26
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
7
0x80070000这个强大的数是什么意思?
2009-2-11 19:13
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
8
知道了,不错,记下来了,原来来自   http://lc.life.blog.163.com/blog/static/24059059200831161012735/
2009-2-11 19:17
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
9
驱网上两年前就有人问过这个问题了,只不过函数是NtCreateSection
2009-2-11 21:40
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
正是!  不过我这样做,BSOD很多次了!
2009-2-12 08:52
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
试验先,感谢ing
2009-2-12 10:01
0
雪    币: 451
活跃值: (78)
能力值: ( LV12,RANK:470 )
在线值:
发帖
回帖
粉丝
12
记录1下..

一个magic number。

win2k源代码private\ntos\rtl\error.c:
ULONG
RtlNtStatusToDosErrorNoTeb (
IN NTSTATUS Status
)
函数体中:
else if ((Status & 0xffff0000) == 0x80070000) {

//
// The status code was a win32 error already.
//

return(Status & 0x0000ffff);
}

也就是如果内核返回0x80070000,错误代码就会被转换成0,应用层使用GetLastError()获得的返回值就是0,因为0表示没有错误,所以就不会弹出错误对话框。

用这个magic number来取代STATUS_ACCESS_DENIED,会比较“优雅”。
2009-2-12 10:23
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
试验后还是会弹错误框啊,这个在XP中好像是一个错误码。
2009-2-12 11:06
0
游客
登录 | 注册 方可回帖
返回
//