greensleeve
驱动牛犊
驱动牛犊
  • 注册日期2002-05-08
  • 最后登录2010-07-17
  • 粉丝0
  • 关注0
  • 积分140分
  • 威望14点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
阅读:1648回复:16

可不可以在系统HOOK中挂起一个用户态线程等到条件满足再让它运行?

楼主#
更多 发布于:2005-05-13 04:42
谢谢
袁飞
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-13 09:10
谢谢

可以将它从就绪链表中去除,满足后在挂入
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2005-05-13 10:31
[quote]谢谢

可以将它从就绪链表中去除,满足后在挂入 [/quote]

把细节说说!
琢磨悟真知
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-13 11:09
核心中有PsActiveProcessHead个东东,它就是所有活动进程链表的头,剩下的就不用说了吧 :D
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2005-05-13 11:37
核心中有PsActiveProcessHead个东东,它就是所有活动进程链表的头,剩下的就不用说了吧 :D


说说,我对此一窍不通
琢磨悟真知
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2005-05-13 11:43
最简单的做法让线程KeWaitForSingleObject,由上层应用程序,满足条件后,通知驱动程序KeSetEvent,就可以。
bmyyyud,你按照你说的方法实现过吗?PsActiveProcessHead是当前
活动的进程的链表,系统调度的时候,是按照线程调度的,不是按照这个链表调度的吧?当然我们可以看windows的源代码,但这样做毕竟设计到很多undocument的东东,不值得推荐吧。我到是对你说的做法很感兴趣,如果你已经实现了,多多请教
violin
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2009-08-22
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望83点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-05-13 12:19
最简单的做法让线程KeWaitForSingleObject,由上层应用程序,满足条件后,通知驱动程序KeSetEvent,就可以。
bmyyyud,你按照你说的方法实现过吗?PsActiveProcessHead是当前
活动的进程的链表,系统调度的时候,是按照线程调度的,不是按照这个链表调度的吧?当然我们可以看windows的源代码,但这样做毕竟设计到很多undocument的东东,不值得推荐吧。我到是对你说的做法很感兴趣,如果你已经实现了,多多请教


看过修改PsActiveProcessHead隐藏进程的人就知道它与
调度沾不上边,去除它一样工作,正是隐藏能成功的原理。
说PsActiveProcessHead是funny
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2005-05-13 12:26
呵呵,同意
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-05-14 09:07
凡是涉及到进程,线程,我认为唯一benign的方法就是PsActiveProcessHead,因为它在WinDbg中公开,我正准备顺藤摸瓜,各位却大谈进程隐藏,不是存心跟我作对 :o :mad: :P :D
难道还要让我用
1 Wowocock以前提过的Hook SWAPCONTEXT及进程线程切换的相关函数
2 暴力枚举PCB
http://www.driverdevelop.com/forum/viewthread.php?tid=89239
3 在KPCR上坐等
这些非常的方法把你们挖出来 :P :D
PsActiveProcessHead可以找到KPROCESS->KTHREAD,然后用SuspendThread等方法去暂停,让OS去摘钩,或者设置KTHREAD状态或将KTHREAD从调度链表上摘掉
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2005-05-14 12:06
<<PsActiveProcessHead,因为它在WinDbg中公开
在windbg中公开什么意思,PsActiveProcessHead没有从ntoskrnl中export吧?

bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-05-15 16:26
<<PsActiveProcessHead,因为它在WinDbg中公开
在windbg中公开什么意思,PsActiveProcessHead没有从ntoskrnl中export吧?

 

详见Windbg联机帮助
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2005-05-16 09:43
你能不能具体解释一下。我不理解你说的windbg中引出的意思

对你说的唯一的方法,我看也都要涉及到硬编码,比其他方法有什么好处呢,还请赐教
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-05-16 10:12
你能不能具体解释一下。我不理解你说的windbg中引出的意思

对你说的唯一的方法,我看也都要涉及到硬编码,比其他方法有什么好处呢,还请赐教

并不是Windbg中引出,Windbg中作为例子,讲解调试草稿,所以相当于是半Documented,所以一般不会在以后的版本中被改变掉
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-05-16 10:18
[quote]你能不能具体解释一下。我不理解你说的windbg中引出的意思

对你说的唯一的方法,我看也都要涉及到硬编码,比其他方法有什么好处呢,还请赐教

并不是Windbg中引出,Windbg中作为例子,讲解调试草稿,所以相当于是半Documented,所以一般不会在以后的版本中被改变掉 [/quote]
建议你看
http://www.xfocus.net/articles/200408/724.html
虽然都是用非常规的方法得到的,但由于是半Documented,所以相对可靠,而对于_KiWaitListHead你要硬编码这些东东,肯定是不如这个可靠
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
violin
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2009-08-22
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望83点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-05-16 10:35

1、可以将它从就绪链表中去除,满足后在挂入;这么说是可以的,虽然实现起来很麻烦。
2、但是PsActiveProcessHead本与前面所说的就绪链表没有什么联系。
3、说进程隐藏就是证明2中的“没有联系\"。
4、谁提的Hook SWAPCONTEXT呢?怎么google一下不是你说的情况.这与PsActiveProcessHead联系不大吧?
5、\"PsActiveProcessHead可以找到KPROCESS->KTHREAD\",这么说就很牵强了,那PsGetCurrentThread、甚至暴力搜KTHREAD也跟调度联系上了?!
6、\"PsActiveProcessHead,因为它在WinDbg中公开\" 不大合理吧?未导出不固定的内核变量谈不上公开,不是文档提到名字就叫公开,Inside2k里一堆变量,绝大多数未公开。

[编辑 -  5/16/05 by  violin]

[编辑 -  5/16/05 by  violin]
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-05-16 12:33

1、可以将它从就绪链表中去除,满足后在挂入;这么说是可以的,虽然实现起来很麻烦。
2、但是PsActiveProcessHead本与前面所说的就绪链表没有什么联系。
顺藤摸瓜之用

3、说进程隐藏就是证明2中的“没有联系\"。
因为PsActiveProcessHead是我们唯一还觉得可靠的接地点,防止以后成为空中楼阁

4、谁提的Hook SWAPCONTEXT呢?怎么google一下不是你说的情况.这与PsActiveProcessHead联系不大吧?
本站wowocock发过,因为本贴不考虑进程被隐藏的问题
而且进程隐藏,居然有老外想用Custom Windows scheduler来做,所谓道高一尺,魔高一丈,你就是从线程就绪链表中都找不到,但这个进程所包含的线程还能运行,所以这里不考虑进程被隐藏的问题

5、\"PsActiveProcessHead可以找到KPROCESS->KTHREAD\",这么说就很牵强了,那PsGetCurrentThread、甚至暴力搜KTHREAD也跟调度联系上了?!
暴力搜索不提倡

6、\"PsActiveProcessHead,因为它在WinDbg中公开\" 不大合理吧?未导出不固定的内核变量谈不上公开,不是文档提到名字就叫公开,Inside2k里一堆变量,绝大多数未公开。
WinDbg的帮助是MS的官方文档
Inside2k书中一开始便说会用到Undocumented的东西
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
violin
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2009-08-22
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望83点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2005-05-16 13:06
再说不知道说到哪里去了,说一下我要表述的结论:
1、硬修改线程就绪链表很难,太多硬编码,应要做还是可以,细节当然更是复杂。
2、线程调度与PsActiveProcessHead毫无关系,从PsActiveProcessHead能找线程这种关系并不属于调度关系,离得太远!断掉ActiveProcess从PsActiveProcessHead就找不到相应的进线程,但这对调度毫无影响,也不可能\"挂起一个用户态线程等到条件满足再让它运行\"。

本来告诉发帖人try try事件等东西就得了,不回了,个人要表达的意思很明白了。


[编辑 -  5/16/05 by  violin]
游客

返回顶部