使用
/* DWORD NtQuerySystemInformation( DWORD dwRecordType,
PDWORD pdwHandleList,
DWORD dwNumBytes,
PDWORD pdwNumBytesRet );
已经正确取得 pdwhandlelist 但是如何根据这块内存找到 系统的内核句柄呢?(象procexp一样)
网上的资料看得我好晕啊
/* DWORD NtQuerySystemInformation( DWORD dwRecordType,
PDWORD pdwHandleList,
DWORD dwNumBytes,
PDWORD pdwNumBytesRet );
已经正确取得 pdwhandlelist 但是如何根据这块内存找到 系统的内核句柄呢?(象procexp一样)
网上的资料看得我好晕啊
typedef struct _SYSTEM_HANDLE_INFORMATION { // Information Class 16
ULONG ProcessId;
UCHAR ObjectTypeNumber;
UCHAR Flags; // 0x01 = PROTECT_FROM_CLOSE, 0x02 = INHERIT
USHORT Handle;
PVOID Object;
ACCESS_MASK GrantedAccess;
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
一旦NtQuerySystemInformation函数调用成功,系统中所有的句柄将被存放在pdwHandleList所指向内存空间中,其中,pdwHandleList所指向的第一个32位数,是这个buf所包含的句柄数量,之后是顺序排列的句柄指针pHandleInfo,指向的是HANDLEINFO结构:
请问 pHandleInfo 这个如何取啊?
还有句柄的名子如何在你的结构里显示呢》
句柄只有数值没有名字
用NtQueryObject
又要用 loadlibrary了
msdn 中
NTSTATUS NtQueryObject(
__in_opt HANDLE Handle,
__in OBJECT_INFORMATION_CLASS ObjectInformationClass,
__out_opt PVOID ObjectInformation,
__in ULONG ObjectInformationLength,
__out_opt PULONG ReturnLength
);
OBJECT_INFORMATION_CLASS这个结构如果想找对象的名字 结构应该是
typedef struct _OBJECT_NAME_INFORMATION {UNICODE_STRING Name; WCHAR NameBuffer[0];} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
不知对吗
我还要好好学习一下windows 内核分析啊
在google里看到一个undocumented.ntinternals.net网站 挺好的都是undocumented的函数
希望对你有用!
圣诞快乐: )