baggio081
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2008-02-20
  • 粉丝0
  • 关注0
  • 积分440分
  • 威望45点
  • 贡献值0点
  • 好评度44点
  • 原创分0分
  • 专家分0分
阅读:2219回复:8

内核里可以弹出对话框吗?

楼主#
更多 发布于:2007-07-18 09:49
就是我hook一个内核的函数,然后要实现弹出一个对话框的功能,不知道怎么实现,麻烦大家给指点一下.
HookZwCreateKey( ... )
{

弹出对话框;
ZwCreateKey( ... );

}

最新喜欢:

wingmanwingma...
wsdgs
驱动牛犊
驱动牛犊
  • 注册日期2006-01-12
  • 最后登录2012-07-15
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望18点
  • 贡献值0点
  • 好评度16点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-07-18 10:47
天才!看看能不能直接弹出,我一般是要做应用程序和内核通讯解决的
baggio081
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2008-02-20
  • 粉丝0
  • 关注0
  • 积分440分
  • 威望45点
  • 贡献值0点
  • 好评度44点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-18 11:23
本来也想用应用程序和内核通讯做的
但是我弹出对话框的目的是为了阻挡或者延缓一下ZwCreateKey,所以用r3弹出的话,感觉不能及时进行阻挡,所以就想直接在r0弹出了,
或者哪位告诉我怎么在r0发个消息给r3,然后r3弹出对话框?
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
地板#
发布于:2007-07-18 11:54
ZwRaiseHardError(    0x50000018, //STATUS_DRIVER_UNABLE_TO_LOAD, // STATUS_SERVICE_NOTIFICATION,    //
                                                           NumberOfParameters,
                                                           UnicodeStringParameterMask,
                                                           pUnicodeArguments,
                                                           ResponseOption,
                                                           &ReturnValue);
    // in the 3 Argument array, 2nd tell UNICODE_STRING location to display.
    // Mask is the bcd(8421) of the display Argument
baggio081
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2008-02-20
  • 粉丝0
  • 关注0
  • 积分440分
  • 威望45点
  • 贡献值0点
  • 好评度44点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-07-18 12:52
引用第3楼KMK于2007-07-18 11:54发表的  :
ZwRaiseHardError(    0x50000018, //STATUS_DRIVER_UNABLE_TO_LOAD, // STATUS_SERVICE_NOTIFICATION,    //
                                                           NumberOfParameters,
                                                           UnicodeStringParameterMask,
                                                           pUnicodeArguments,
                                                           ResponseOption,
.......


但是我只能在ntoskrnl里找到ExRaiseHardError,,试了一下,softice里显示页面错误,然后直接重启了...
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2007-07-18 13:31
有必要吗?
人不靓仔心灵美,版头不正红花仔!
baggio081
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2008-02-20
  • 粉丝0
  • 关注0
  • 积分440分
  • 威望45点
  • 贡献值0点
  • 好评度44点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-07-18 16:04
引用第5楼ProPlayboy于2007-07-18 13:31发表的  :
有必要吗?

那你的建议是?
TonyLiu_WH
驱动牛犊
驱动牛犊
  • 注册日期2007-07-18
  • 最后登录2008-02-25
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-07-18 23:17
在底层想直接显示窗体和用户交互是极为困难的。其实你可以这样做:

在ring0, 1)驱动拦截ZwCreateKey  2) 若ring3程序已启动,则记录要判断的操作,触发ring3等待的事件event1,并等待另一个事件event2(超时时间随需求而定);若ring3程序没启动则执行默认操作 3)若event2被触发,读取处理的结果(ring3返回的结果),并执行相关操作;若event2超时,则执行默认处理。

在ring3, 1)向驱动注册自己(DeviceIoControl) 2)创建事件event1,并等待 3)若event1被触发,则从驱动读取需要处理的数据(DevIo),处理完后将结果返回给驱动(DevIo),并触发event2

这里描述的过程比较简单,但实际上要复杂一些,尤其是对 需要判断的 “操作”的队列 的处理,需要多注意一下
baggio081
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2008-02-20
  • 粉丝0
  • 关注0
  • 积分440分
  • 威望45点
  • 贡献值0点
  • 好评度44点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-07-23 19:16
恩,,谢谢了,,
我这样试试
游客

返回顶部