Sephiroth
驱动牛犊
驱动牛犊
  • 注册日期2003-05-03
  • 最后登录2005-09-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2451回复:7

如何在驱动中IRQL = 2修改用户进程的线程的EIP

楼主#
更多 发布于:2004-10-08 18:55
存放EIP的KTRAP_FEAME结构,无论是ETHREAD->TrapFrame还是ETHREAD->InitialStack-0x29c都处于缺页状态,调用ZwGetContextThread这种用APC机制的函数也无法成功,返回ACCESS_VIOLANT,我把IRQL降到了0也不行。。。连读都不行,别说修改了。。。

修改的线程是LSASS.EXE中的某个线程,非系统线程,被阻塞前的EIP是用户空间地址,一般该地址是某个系统调用的ret 0xXX指令。

这个问题困扰我很久了,有能帮回答的高手实在感激不尽
Sephiroth
驱动牛犊
驱动牛犊
  • 注册日期2003-05-03
  • 最后登录2005-09-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-08 18:58
注:前面说的缺页的都是要修改的线程,ETHREAD也是该线程的
shuangsy
驱动牛犊
驱动牛犊
  • 注册日期2004-03-15
  • 最后登录2018-05-26
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2004-10-08 22:07
你是如何把IRQL降低到0的?用workitem?还是单独开了一个系统线程?或是什么别的方法?
我也遇到过类似问题,但我就没能把IRQL降到0。
还望指点一二,谢谢!
以德服人
xqchen
驱动牛犊
驱动牛犊
  • 注册日期2001-09-07
  • 最后登录2004-12-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-09 04:36
To Sephiroth,

为什么要改返回地址? 如果能够给出你的目的,应该会有更好的方法。

你好象在另外一个进程中访问LSASS.EXE,会有不同的页目录基址(CR3).而且在IRQL>=2时不能有PageFault。


To shuangsy,
不要手工改,最好用DPC或者WorkerItem/System Thread.是来处理不能在高IRQL时做的事情。但是,那已经是不同的context了。
Sephiroth
驱动牛犊
驱动牛犊
  • 注册日期2003-05-03
  • 最后登录2005-09-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-10-09 10:24
楼上的可能误解我意思了,我是要修改该线程的EIP,使它下次恢复执行时从我指定的EIP开始执行(当然,是在该进程空间内的地址)。CR3是可以手动转换的,将该进程的CR3修改CR3寄存器和任务段里的CR3(这个好象不改也行),就可以打开该进程地址空间。因为页错误会导致磁盘I/O导致环境切换,所以当然不能发生在IRQL = 2上,但我奇怪为啥IRQL = 0时也不行。

不知哪位高手有变通的方法,还望不吝赐教:)

PS:我说的要修改EIP是发生在IRQL = 2时。楼上说的PsCreateSystemThread也只能在IRQL = 0时调用,所以当然得手动降IRQL,但是得确定不会导致其它错误的前提上。

[编辑 -  10/9/04 by  Sephiroth]

[编辑 -  10/9/04 by  Sephiroth]
Sephiroth
驱动牛犊
驱动牛犊
  • 注册日期2003-05-03
  • 最后登录2005-09-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-10-10 22:51
看了两天的WINDOWS源代码,终于自己解决了,结贴,感谢回复的朋友:)
xqchen
驱动牛犊
驱动牛犊
  • 注册日期2001-09-07
  • 最后登录2004-12-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-10-13 23:42
Could you please post your solution? So we can learn from you.
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
7楼#
发布于:2004-10-14 15:53
看了两天的WINDOWS源代码,终于自己解决了,结贴,感谢回复的朋友:)

你是如何解决的???
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部