首页
社区
课程
招聘
[讨论]PsGetCurrentProcess的问题
发表于: 2011-4-21 19:12 8845

[讨论]PsGetCurrentProcess的问题

2011-4-21 19:12
8845
if ( _stricmp(PsGetProcessImageFileName(PsGetCurrentProcess()), "xxxx.exe") )
这句代码中的 PsGetCurrentProcess
按MSDN上的说明是得到当前进程的句柄这个句柄指向的是EPROCESS这个结构

但我始终不明白,这个得到当前进程的句柄具体啥意思?
这个函数是在驱动中调用的!

难道指的这个句柄是指R3下程序调用GetCurrentProcess这个函数后切换到R0下后
的操作,这个当前进程句柄,指的实际就是问R3下切换到R0中的应用程序的句柄?

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 197
活跃值: (82)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我的理解是 HANDLE是用来标识 内核对象的 ,这个R0、R3有区别么
2011-4-21 20:02
0
雪    币: 387
活跃值: (76)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
句柄是针对进程
2011-4-21 20:31
0
雪    币: 7
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我的晕搞越晕了!例如在一个驱动程序中使用了
PsGetCurrentProcess这个函数,难道他返回的是这个驱动的句柄???
2011-4-21 20:42
0
雪    币: 601
活跃值: (256)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
5
R3下GetCurrentProcess得到是永远是-1,是一个伪句柄,这个函数在kernel.dll直接返回不进入内核;R0PsGetCurrentProcess()得到是进程对象的指针,就是指向EPROCESS结构,这个句柄就是EPROCESS的地址
2011-4-21 20:55
0
雪    币: 100
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
哎,娃!!!

举个例子吧!!!
比如你写了个驱动,又写了个应用程序与驱动交互!

在应用程序里你调用CreateFile打开驱动!

在驱动的IRP_CREATE里你调用PsGetCurrentProcess,那么你获得的就是你写的这个应用程序的PEPROCESS!!!
2011-4-21 22:47
0
雪    币: 100
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
回去睡觉咯,顺便把今天的看火影看咯!!!
2011-4-21 22:48
0
雪    币: 7
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这样的啊!!我的郁闷呀!开始我想了好久以为是应用层调用然后到内核调用它,这个函数在返回一个当前程序的句柄,
原来是这么个道理呀!!!
非常低感谢!!
2011-4-21 22:58
0
雪    币: 7
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
哈哈你也火影迷呀??
2011-4-21 22:59
0
游客
登录 | 注册 方可回帖
返回
//