首页
论坛
课程
招聘
[系统底层] [求助]被调试进程的句柄问题
2007-10-4 00:26 6053

[系统底层] [求助]被调试进程的句柄问题

2007-10-4 00:26
6053
这两天,在研究怎么写调试器,刚才遇到这么个问题,希望各位大人赐教,谢谢!

一个进程被调试打开,在CREATE_PROCESS_DEBUG_EVENT事件的时候,能够得到被调试进程的HANDLE,假定为handle1,通过这个句柄可以读写这个进程空间

把被调试进程的主线程句柄传给ZwQueryInformationThread(ThreadBasicInformation)这个API,在ClientId里可以获得被调试进程的另一个句柄handle2

现在的问题是,为什么我在调试器里用handle2去读写被调试进程空间就失败,错误码是6(无效句柄)?

[公告]请完善个人简历信息,招聘企业等你来!

收藏
点赞0
打赏
分享
最新回复 (11)
雪    币: 1639
活跃值: 活跃值 (35)
能力值: (RANK:450 )
在线值:
发帖
回帖
粉丝
linxer 活跃值 11 2007-10-4 00:52
2
0
问题解决了

真晕,上面的handle2是pid,OpenProcess一次就可以读写被调试进程空间了
雪    币: 8037
活跃值: 活跃值 (96)
能力值: ( LV15,RANK:1844 )
在线值:
发帖
回帖
粉丝
ccfer 活跃值 15 2007-10-4 00:56
3
0
ProcessId和ProcessHandle是不同的概念
雪    币: 202
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
一个刀客 活跃值 1 2007-10-4 00:58
4
0
楼主把HANDLE和ID搞混了吧...
PID跟HANDLE是不同的, 任务管理器和IS是看不到Handle的, 所以你发现了被调试进程的pid不是这个handle1

ThreadBasicInformation返回的ClientId是进程id和线程id, 不是他们的句柄, 所以你用它们读写被调试进程空间就失败了, 所以错误码是6
雪    币: 202
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
一个刀客 活跃值 1 2007-10-4 01:00
5
0
太强了, 长夜漫漫无心睡眠, 我以为只有我睡不着, 没想到ccfer大侠你也睡不着...

缘分啊缘分..
雪    币: 211
活跃值: 活跃值 (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
十三少 活跃值 2 2007-10-4 01:06
6
0
太强了, 长夜漫漫无心睡眠, 我以为只有我睡不着, 没想到刀客MM你 也睡不着啊。
雪    币: 1639
活跃值: 活跃值 (35)
能力值: (RANK:450 )
在线值:
发帖
回帖
粉丝
linxer 活跃值 11 2007-10-4 01:06
7
0
我是把它当HANDLE用了,所以就无效句柄了
雪    币: 8037
活跃值: 活跃值 (96)
能力值: ( LV15,RANK:1844 )
在线值:
发帖
回帖
粉丝
ccfer 活跃值 15 2007-10-4 01:11
8
0
太强了, 长夜漫漫无心睡眠, 我此时的心已经飞进了小肥羊火锅店
雪    币: 5535
活跃值: 活跃值 (10)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 活跃值 26 2007-10-4 01:18
9
0
我确定我就是那一只批着羊皮的狼,等着七个羔羊来切片炖汤

如果要用DEBUG_EVENT的handle,就要关闭Createprocess handle
雪    币: 164
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
不懂算法 活跃值 2 2007-10-4 01:23
10
0
漫漫无心睡眠夜真是太长了
雪    币: 1829
活跃值: 活跃值 (10)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
Bughoho 活跃值 8 2007-10-4 01:40
11
0
我确定你就是我心中如花的肥羊。
雪    币: 104
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
老纳 活跃值 2007-10-4 09:38
12
0
我要看宰羊
游客
登录 | 注册 方可回帖
返回