首页
社区
课程
招聘
[求助]如何在ring0下获取某个进程的句柄?
发表于: 2010-5-9 22:58 7726

[求助]如何在ring0下获取某个进程的句柄?

2010-5-9 22:58
7726
前提条件是我只知道这个进程名,PID除外。我怎么在ring0下获取这个进程。开始自己想到了遍历EPROCESS.来查找这个进程的EPROCESS。问题又来了,那怎么在EPROCESS结构中获取这个进程的句柄呢?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 213
活跃值: (147)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
之前好像有人发过类似的帖,你搜搜看
2010-5-10 09:46
0
雪    币: 386
活跃值: (46)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
eprocess都有了......
2010-5-10 12:56
0
雪    币: 75
活跃值: (813)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
看了下,好像还没有一个什么系统函数可以通过eprocess获得进程句柄的。虽然每个进程都有一个句柄表,但你想要的不会在里面。eprocess 也好像没有其他相关参数来保存进程句柄的。
要找句柄,估计只有去句柄表里面找。创建句柄一般是用这个函数完成的,
ExCreateHandle(IN PHANDLE_TABLE HandleTable,
               IN PHANDLE_TABLE_ENTRY HandleTableEntry)。第一个参数是内核句柄表,第二个参数HandleTableEntry-〉Object把 句柄和对应的对象关联起来了。object是对象头,应该可以根据eprocess推算出对象头,然后遍历内核句柄表,找到object指针一致的项,应该就能把此进程的句柄挖出来
2010-5-10 18:22
0
雪    币: 114
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看来这有这样了,由于PID是变换的。我可以通过找某进程的PID再到pspCidTAble表中去索引他的句柄,相信应该能搞定。
2010-5-10 23:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
ZwOpenProcess?不能直接获得句柄了么?
2010-8-11 17:36
0
雪    币: 8339
活跃值: (2921)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
晕倒.

顺着 PsActiveProcessHead找到目标EPROCESS.[找的时候PsGetProcessImageFileName可能有点用]

然后 ObOpenObjectByPointer之.

记得减少引用.

完事.
2010-8-11 18:00
0
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
8
PsLookupProcessByProcessId ,可以由pid获得eprocess
ZwOpenProcess,可以由pid获得handle
ObReferenceObjectByHandle,可以由handle获得eprocess
遍历进程可以搜索链表(不加锁有概率会蓝),也可以ZwQuerySystemInformation
2010-8-12 09:11
1
雪    币: 132
活跃值: (30)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
看不懂~
努力学习~
希望有一天可以看懂~
楼主辛苦~
2010-10-28 06:20
0
游客
登录 | 注册 方可回帖
返回
//