VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 944|回复: 3

[讨论] 【求助】WIN 7 下驱动中获取CSRSS.EXE的PID

[复制链接]
31_avatar_middle
在线会员 发表于 2015-11-8 16:23:34 | 显示全部楼层 |阅读模式
以下代码在XP中无问题,WIN7不行。

HANDLE GetCsrPid()
{
        HANDLE Process, hObject;
        HANDLE CsrId = (HANDLE)0;
        OBJECT_ATTRIBUTES obj;
        CLIENT_ID cid;
        UCHAR Buff[0x100];
        POBJECT_NAME_INFORMATION ObjName = (PVOID)&Buff;
        PSYSTEM_HANDLE_INFORMATION_EX Handles;
        ULONG r;

        Handles = GetInfoTable(SystemHandleInformation);
        if (!Handles) return CsrId;
        for (r = 0; r < Handles->NumberOfHandles; r++)
        {
                if (Handles->Information[r].ObjectTypeNumber == 21) //Port object
                {
                        InitializeObjectAttributes(&obj, NULL, OBJ_KERNEL_HANDLE, NULL, NULL);

                        cid.UniqueProcess = (HANDLE)Handles->Information[r].ProcessId;
                        cid.UniqueThread = 0;

                        if (NT_SUCCESS(NtOpenProcess(&Process, PROCESS_DUP_HANDLE, &obj, &cid)))
                        {
                                if (NT_SUCCESS(ZwDuplicateObject(Process, (HANDLE)Handles->Information[r].Handle,NtCurrentProcess(), &hObject, 0, 0, DUPLICATE_SAME_ACCESS)))
                                {
                                        if (NT_SUCCESS(ZwQueryObject(hObject, ObjectNameInformation, ObjName, 0x100, NULL)))
                                        {
                                                if (ObjName->Name.Buffer && !wcsncmp(L"\\Windows\\ApiPort", ObjName->Name.Buffer, 20))
                                                {
                                                        CsrId = (HANDLE)Handles->Information[r].ProcessId;
                                                }
                                        }
                                        ZwClose(hObject);
                                }
                                ZwClose(Process);
                        }
                }
        }
        ExFreePool(Handles);
        return CsrId;
}

如何在WIN7下也兼容使用呢?




上一篇:诚聘大侠帮我解决源码问题
下一篇:(小鱼)分享自己收藏比较有用的网络编程的代码
31_avatar_middle
ico_lz  楼主| 发表于 2015-11-8 16:50:34 | 显示全部楼层
结贴,自己搞定了。
98_avatar_middle
在线会员 发表于 2015-11-9 16:36:29 | 显示全部楼层
jzsh 发表于 2015-11-8 16:50
结贴,自己搞定了。

楼主不地道 为什么不共享 哈哈
26_avatar_middle
在线会员 发表于 2016-7-13 22:24:21 来自手机 | 显示全部楼层
我就笑笑不说话1468448596.69
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-23 22:12

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表