首页
社区
课程
招聘
[求助]ObReferenceObjectByHandle的问题
发表于: 2008-12-3 22:02 6435

[求助]ObReferenceObjectByHandle的问题

2008-12-3 22:02
6435
PVOID buffer = irp->AssociatedIrp.SystemBuffer;
KEVENT RYYEvent;
int EventHandle=(* (int *)buffer);
buffer里的是一个系统对象句柄的地址(地址当作数据来传递到buffer里),
ObReferenceObjectByHandle((HANDLE)EventHandle,EVENT_ALL_ACCESS,*ExEventObjectType,KernelMode,(PVOID*)&RYYEvent,NULL);
记得以前草屋居士跟我说过用把HANDLE传入ObReferenceObjectByHandle,就可以得到一个事件对象。但是这样就会蓝屏,这是为什么呢?

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
ring3:
HANDLE myevent= CreateEvent(NULL,false,false,"myevent");
..........
DeviceIoControl(hdevice, IOCTL_READ_DEVICE_INFO,
                &myevent, 4,answer,sizeof(answer), &junk, NULL))

ring0:
.......
myevent=*(PHANDLE)(Irp->AssociatedIrp.SystemBuffer);
status = ObReferenceObjectByHandle(myevent,
                                      GENERIC_ALL,
                                      NULL,
                                      KernelMode,
                                      &pMsgKEvent,
                                      NULL);
......
KeSetEvent(pMsgKEvent,   0,   FALSE);
蓝屏的话,自己调试看看,到底哪里有问题,不过我猜你蓝屏估计是DeviceIoControl里面event传错了吧,没有传入地址,我看你另一个帖子是传入的是(void *)RYYevent,这样导致你在ring0接收时EventHandle=(* (int *)buffer),得到的eventhandle无效,你跟踪一下,应该就是这里错了
2008-12-4 09:17
0
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
3
ObReferenceObjectByHandle((HANDLE)EventHandle,EVENT_ALL_ACCESS,*ExEventObjectType,KernelMode,(PVOID*)&RYYEvent,NULL);

没用过这种办法..不过把KernelMode改成usermode看看
2008-12-4 20:40
0
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
KEVENT RYYEvent;

应该是PKEVENT,我用PKEVENT 没蓝
2008-12-4 22:10
0
游客
登录 | 注册 方可回帖
返回