阅读:1895回复:16
高分求解,api hook.
我用已经可以hook ZwShutdownSystem。
当然知道他的实际的入口地址。 问题: 1.为什么,在2k或xp下,直接调用时(在IOTIMER中),在我的开发机器上,或少数机器上可以实现关机、重启等操作,而在有些机器上会出现蓝屏。(我觉得是不是要象win32程序那样,提升应用程序的权限?)或者有类似wp开关一样的东西没有设置。 2.我想实现当用户注销切换用户或只是为了注销并不注销用户时,我的wdm驱动,能接收到通知。如果用Hook,hook哪个服务(函授比较好)? 请大家提示,有源码更好。 |
|
沙发#
发布于:2004-10-12 16:09
自己顶先。
没有人知道,还是没有高人来过? |
|
板凳#
发布于:2004-10-12 18:37
我用已经可以hook ZwShutdownSystem。 你是怎么获得他的实际的入口地址 蓝屏一般都是内存违规操作导致 |
|
|
地板#
发布于:2004-10-12 21:11
你是怎么获得他的实际的入口地址
------------------------------ 直接从ntdll中找到这个函授,然后,得到他的服务地址并替换就可以了。 当我重启,或关机的时候,他会进我的新函授,表明,已经hook成功。但是,有的机器上会蓝屏,是在客户机器上。xp,2k不定。 蓝屏一般都是内存违规操作导致 ------------------------------ 我觉得不是这个问题 ,如果是内存违规操作那么,为什么有的机器上又可以呢,如我现在的开发机器,装有ddk,我家里有xp,2k没有装ddk,都是正常的,而在客户那里(机器配置,软件环境复杂)大部分会蓝屏。 还有就是,我想hook 当用户注销时,在驱动环境下,我怎么知道用户已经注销,还没有登陆。也就是,停在登陆界面,没有输入用户名和密码。 |
|
地下室#
发布于:2004-10-12 21:50
顶一下,挣点参与分啊,还差点就可以载个文件了
|
|
5楼#
发布于:2004-10-12 21:52
你是通过reset cr0 的 16bit 来修改 页表属性吗?
我这样做是 没有问题的! |
|
6楼#
发布于:2004-10-12 22:43
你蓝屏的MINIDMP文件的内容是什么,堆栈的信息如何???
|
|
|
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程序那样有权限之分? |
|
8楼#
发布于:2004-10-13 15:10
hook这些服务,都是可以的,问题是,我直接调用其中的ZwShutdownSystem对应的实际地址。传入参数,重启。会蓝屏。
忘了一个问题是,我想知道用户注销的消息,想通过hook某个服务能得到通知。但是我不知道hook哪个,或用哪个驱动api.请告知。 我试过Hook ZwShutdownSystem,当你关机的时候,会进入我hook的函授,但是当注销的时候,进不去。我想注销是没有调用这个服务的。 想问一下各位注销时,会调用哪些服务。 |
|
9楼#
发布于:2004-10-13 16:38
如何得知用户点关闭->注销->确定。确定之后的消息?
。。。。 [编辑 - 10/13/04 by wwwllg] |
|
10楼#
发布于:2004-10-13 18:48
最好的办法就是写GINA DLL。
|
|
11楼#
发布于:2004-10-13 20:27
同意,写个GINA,即简单又对你“要得到注销通知”的路子,如果有些Ring0操作是必须的,也可以在GINA中与你的Driver协作。。。
|
|
12楼#
发布于:2004-10-14 02:01
如果要用gina,那我就不用wdm了。
请大家想想,有其他办法吗? |
|
13楼#
发布于:2004-10-14 08:33
gina是什么东东?简单讲一下吧。
|
|
14楼#
发布于:2004-10-14 08:51
如何得知用户点关闭->注销->确定。确定之后的消息? 确定之后应该就是重新登陆操作,那么这个时候肯定会建立安全Token,Hook NtCreateToken()例程看看。 |
|
15楼#
发布于:2004-10-14 23:07
[quote]如何得知用户点关闭->注销->确定。确定之后的消息? 确定之后应该就是重新登陆操作,那么这个时候肯定会建立安全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] |
|
16楼#
发布于:2004-10-15 10:53
没人,能解决这个问题吗?
|
|