首页
社区
课程
招聘
[旧帖] [求助]调用ObReferenceObjectByName获得不到指针 0.00雪花
发表于: 2013-2-22 11:02 1379

[旧帖] [求助]调用ObReferenceObjectByName获得不到指针 0.00雪花

2013-2-22 11:02
1379
求各位高手看下
#define KBD_DRIVER_NAME L"\\Driver\\Kbdclass"
//打开设备对象
NTSTATUS OpenDriverByName(PDRIVER_OBJECT DriverObject,PUNICODE_STRING Regpath){
                        PDRIVER_OBJECT KbdDriverObject = NULL;
                        NTSTATUS status;
                        UNICODE_STRING kbdname;
                       
                        RtlInitUnicodeString(&kbdname,KBD_DRIVER_NAME);
                       
                        status = ObReferenceObjectByName(
                                                                                        &kbdname,
                                                                                        OBJ_CASE_INSENSITIVE, //不区分大小写
                                                                                        NULL,
                                                                                        0,
                                                                                        *IoDriverObjectType,
                                                                                        KernelMode,
                                                                                        NULL,
                                                                                        &KbdDriverObject
                );
               
                if(NT_SUCCESS(status)){
                                DbgPrint("cannot get the kbd object/n");
              return STATUS_UNSUCCESSFUL;
                }

                DbgPrint("Hook 开始");
               
                //保留原分发函数的入口地址
                OldDispatchRead = KbdDriverObject->MajorFunction[IRP_MJ_READ];
                //绑定新的分发函数
                InterlockedExchangePointer(&KbdDriverObject->MajorFunction[IRP_MJ_READ],newDisperseFun);
                //解除引用
                ObDereferenceObject(KbdDriverObject);
}
//入口函数
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegPath){
                PDRIVER_OBJECT KbdDriverObject = NULL;
                UNICODE_STRING KbdName;
                NTSTATUS status;
                #if DBG
                                _asm int 3
                #endif
                //init string
               
               
                OpenDriverByName(DriverObject,RegPath);
               
               
                DriverObject->DriverUnload = DriverUnload;
                return STATUS_SUCCESS;
               
}
在加粗的时候调用 返回的是0x000没有得到 我看驱动名字没有写错 在我写的另一个过滤驱动就可以正常得到 在这里就是得不到求高手指点下

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

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
知道哪里错了 太粗心了  NT_SUCCESS(status) 没取反  。。。。。
2013-2-22 11:05
0
游客
登录 | 注册 方可回帖
返回
//