获取进程句柄名称
getting process handle name
本文关键字:取进程句柄 更新时间:2023-10-16
我正在尝试获取进程句柄的名称。我遍历所有句柄的列表,并尝试像这样获取名称:
void SystemHandle::GetHandleName()
{
HANDLE hFake;
char* objectName = NULL;
if (NT_SUCCESS(DuplicateHandle(this->process, this->GetNativeHandle(), GetCurrentProcess(), &hFake, 0, FALSE, DUPLICATE_SAME_ACCESS)))
{
POBJECT_TYPE_INFORMATION typeInfo = (POBJECT_TYPE_INFORMATION)new BYTE[0x1000];
PUNICODE_STRING nameInfo = (PUNICODE_STRING)new BYTE[0x1000];
DWORD read;
NTSTATUS status = NtQueryObject(hFake, ObjectTypeInformation, typeInfo, 0x1000, &read);
std::cout << "NtQueryObject: " << status << ", Success: " << NT_SUCCESS(status) << "n";
objectName = new char[nameInfo->Length];
if (NT_SUCCESS(status) && nameInfo->Length > 0)
{
std::cout << "nameInfo length: " << nameInfo->Length << "n";
std::cout << "objectName size: " << sizeof(objectName) << "n";
std::cout << "nameInfo buffer: " << sizeof(nameInfo->Buffer) << "n";
WideToChar(objectName, nameInfo->Buffer);
strcpy_s(this->handleName, objectName);
}
delete nameInfo;
delete typeInfo;
}
if (hFake) CloseHandle(hFake);
}
void WideToChar(char* Dest, const WCHAR* Source)
{
int i = 0;
// get each char from Source and put it in Dest
while(Source[i] != ' ')
{
Dest[i] = (CHAR)Source[i];
++i;
}
Dest[i] = ' '; // create the end
}
我的问题始于WideToChar(objectName, nameInfo->Buffer);
当我到达while(Source[i] != ' ')
时。
然后我会得到以下错误:
Unhandled exception at 0x00406CE5 in application.
exe: 0xC0000005: Access violation reading location 0xBAADF00D.
为 nameInfo
变量分配内存,但不对其进行初始化。因此,当您尝试使用它时,nameInfo->Buffer
包含0xBAADF00D
- Microsoft未初始化堆内存的幻数。然后,您将获得访问冲突。您还应该使用WideCharToMultibyte
函数进行字符串转换。
换
行
while(Source[i] != ' ')
{
Dest[i] = (CHAR)Source[i];
++i;
}
在 if 条件内:
if(Source != NULL){
}
相关文章:
- 枚举进程模块在有效句柄上返回无效句柄
- 获取特定进程的句柄数
- 获取现有进程句柄
- 获取进程内存信息失败,错误 6 句柄无效
- 是否可以注入一个进程并获取给定的句柄,然后使用它们注入另一个进程
- 将窗口句柄从一个进程使用到另一个进程(插件 vst 音频)
- 为什么使用 ReadProcessMemory() 和当前进程的句柄
- 如何通过其 HWND 句柄在另一个进程中更改 TDateTimePicker 控件中的当前选定日期
- C++:通过进程id、进程句柄和标题名称从进程中获取唯一窗口的窗口句柄的最佳方法
- 获取进程句柄的详细信息
- 如何在Windows中获取当前进程的所有子进程的句柄
- 获取进程句柄名称
- 具有进程的句柄 如何注册以监视其关闭/重新启动/复制事件
- Windows -- 继承子进程中的控制台文件句柄
- 如何从win32进程中获取线程句柄列表
- 如何在C/C++中创建一个新进程,并在WinXp中获得这个新进程句柄
- 从Windows中的父进程继承句柄
- 获取已创建进程的进程句柄
- 枚举进程句柄,奇怪的问题
- 从进程句柄获取进程信息