wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1895回复:16

高分求解,api hook.

楼主#
更多 发布于:2004-10-12 13:37
我用已经可以hook ZwShutdownSystem。
当然知道他的实际的入口地址。
问题:
1.为什么,在2k或xp下,直接调用时(在IOTIMER中),在我的开发机器上,或少数机器上可以实现关机、重启等操作,而在有些机器上会出现蓝屏。(我觉得是不是要象win32程序那样,提升应用程序的权限?)或者有类似wp开关一样的东西没有设置。
2.我想实现当用户注销切换用户或只是为了注销并不注销用户时,我的wdm驱动,能接收到通知。如果用Hook,hook哪个服务(函授比较好)?
请大家提示,有源码更好。
wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-12 16:09
自己顶先。
没有人知道,还是没有高人来过?
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-12 18:37
我用已经可以hook ZwShutdownSystem。
当然知道他的实际的入口地址。
问题:
1.为什么,在2k或xp下,直接调用时(在IOTIMER中),在我的开发机器上,或少数机器上可以实现关机、重启等操作,而在有些机器上会出现蓝屏。(我觉得是不是要象win32程序那样,提升应用程序的权限?)或者有类似wp开关一样的东西没有设置。
2.我想实现当用户注销切换用户或只是为了注销并不注销用户时,我的wdm驱动,能接收到通知。如果用Hook,hook哪个服务(函授比较好)?
请大家提示,有源码更好。
 

你是怎么获得他的实际的入口地址
蓝屏一般都是内存违规操作导致
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-12 21:11
你是怎么获得他的实际的入口地址
------------------------------
直接从ntdll中找到这个函授,然后,得到他的服务地址并替换就可以了。
当我重启,或关机的时候,他会进我的新函授,表明,已经hook成功。但是,有的机器上会蓝屏,是在客户机器上。xp,2k不定。

蓝屏一般都是内存违规操作导致
------------------------------
我觉得不是这个问题 ,如果是内存违规操作那么,为什么有的机器上又可以呢,如我现在的开发机器,装有ddk,我家里有xp,2k没有装ddk,都是正常的,而在客户那里(机器配置,软件环境复杂)大部分会蓝屏。

还有就是,我想hook 当用户注销时,在驱动环境下,我怎么知道用户已经注销,还没有登陆。也就是,停在登陆界面,没有输入用户名和密码。
iterater
驱动牛犊
驱动牛犊
  • 注册日期2004-07-30
  • 最后登录2006-10-20
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望6点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-10-12 21:50
顶一下,挣点参与分啊,还差点就可以载个文件了
iterater
驱动牛犊
驱动牛犊
  • 注册日期2004-07-30
  • 最后登录2006-10-20
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望6点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-10-12 21:52
你是通过reset cr0 的 16bit 来修改 页表属性吗?

我这样做是 没有问题的!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2004-10-12 22:43
你蓝屏的MINIDMP文件的内容是什么,堆栈的信息如何???
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-10-13 15:04
你蓝屏的MINIDMP文件的内容是什么,堆栈的信息如何???



你是通过reset cr0 的 16bit 来修改 页表属性吗?
---------------------------------------------
我是wowocock的提供的方法。
_asm cli
_asm mov eax,cr0
_asm and eax,0fffeffffh
_asm mov cr0,eax
------------------------------------------------
蓝屏上提示的信息有时候不一样,有时候上面还会有一个倒计时的读秒。几秒后机器就重启了。不过是蓝屏重启的。
有时候,是好象是iorq的级别问题,也是蓝屏,可能是我没读懂上面的错误提示。
这些都是在一些没有ddk,softice的环境上发生的,如果有开发环境就是正常的。至少在我的开发机器上是正常的。
还请wowocock大侠再分析一下原因。

还想问的是,在wdm里,有没有象win32程序那样有权限之分?


wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-10-13 15:10
hook这些服务,都是可以的,问题是,我直接调用其中的ZwShutdownSystem对应的实际地址。传入参数,重启。会蓝屏。

忘了一个问题是,我想知道用户注销的消息,想通过hook某个服务能得到通知。但是我不知道hook哪个,或用哪个驱动api.请告知。

我试过Hook ZwShutdownSystem,当你关机的时候,会进入我hook的函授,但是当注销的时候,进不去。我想注销是没有调用这个服务的。
想问一下各位注销时,会调用哪些服务。
wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-10-13 16:38
如何得知用户点关闭->注销->确定。确定之后的消息?
。。。。


[编辑 -  10/13/04 by  wwwllg]
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-10-13 18:48
最好的办法就是写GINA DLL。
qcy
qcy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-27
  • 最后登录2005-04-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-10-13 20:27
同意,写个GINA,即简单又对你“要得到注销通知”的路子,如果有些Ring0操作是必须的,也可以在GINA中与你的Driver协作。。。
wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-10-14 02:01
如果要用gina,那我就不用wdm了。

请大家想想,有其他办法吗?
cicada
驱动小牛
驱动小牛
  • 注册日期2003-12-09
  • 最后登录2008-07-11
  • 粉丝1
  • 关注0
  • 积分74分
  • 威望15点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-10-14 08:33
gina是什么东东?简单讲一下吧。
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-10-14 08:51
如何得知用户点关闭->注销->确定。确定之后的消息?
。。。。


[编辑 -  10/13/04 by  wwwllg]


确定之后应该就是重新登陆操作,那么这个时候肯定会建立安全Token,Hook NtCreateToken()例程看看。
wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-10-14 23:07
[quote]如何得知用户点关闭->注销->确定。确定之后的消息?
。。。。


[编辑 -  10/13/04 by  wwwllg]


确定之后应该就是重新登陆操作,那么这个时候肯定会建立安全Token,Hook NtCreateToken()例程看看。 [/quote]

tokenmon我看过。
ntcreatetoken我也hook了。
但是,这个也没有用。因为当用户还没有登陆的时候,其实,token已经创建,也就是说,ntcreatetoken已经执行过了。而且会有多个程序会调用ntcreatetoken.如winlog,lsass.exe.
另一个情况就是,当用户注销还没有登陆进入windwows的时候,不进入tokenmon的logoff回调函授,而重新启动计算机,关闭时,才进入Logoff.所以我现在晕了。而在tokenmone中他有一个令牌管理,而且在安全方面,他也只是用一个Lib封装起来了,没有源码。
而我在codeproject.com上看到一个在win32上的程序,也是通过token和安全方面的东东,经过一系列让我头晕的操作,可以知道logoff.我看不懂,我想,tokenmone也是相同的方法,只不过是win32中对应的nt服务或相对应的api函授,所以在此看有没有简单的方法。请高手发表自己的意见。

现在项目赶的紧,还很大家帮忙。


[编辑 -  10/14/04 by  wwwllg]
wwwllg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-03-22
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-10-15 10:53
没人,能解决这个问题吗?
游客

返回顶部