如何从wow64进程中检索特定内核对象的64位地址
How to retrieve the 64-bit address for a specific kernel object from a wow64 process
是否可以从32位WOW64进程中获取内核对象的64位地址?
例如,我想获得具有给定pid的进程的64位内核地址。此值将是内核记录器进程事件的"UniqueProcessKey"。
我可以使用NtDll:获得32位地址
NtQuerySystemInformation
typedef struct _SYSTEM_HANDLE {
ULONG ProcessId;
BYTE ObjectTypeNumber;
BYTE Flags;
USHORT Handle;
PVOID Object;
ACCESS_MASK GrantedAccess;
} SYSTEM_HANDLE, *PSYSTEM_HANDLE;
但我需要64位地址。提前谢谢。
我找到了答案。
前提是,由于wow64是一个位于64位进程地址空间内的模拟器,因此应该可以调用Nt…函数的64位版本。事实证明你可以。有如下功能:
32-bit: 64-bit:
NtQuerySystemInformation NtWow64GetNativeSystemInformation
NtQueryInformationProcess NtWow64QueryInformationProcess64
然而,存在一个问题。NtWow64GetNativeSystemInformation不支持SystemHandleInformation类,至少在Win7上是这样。因此,我无法获得地址。
无论如何,如果你需要在一个32位的wow进程中处理64位进程,由于某些依赖性,你无法逃脱,那么SO还有一些其他线程值得研究:
如何获取GDI句柄列表
从32位进程中获取64位进程的命令行字符串
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 分段错误(内核转储) C++面向对象编程
- OPENCL:可以将模板对象作为内核参数,并使用boost :: Compute
- 通过复制将对象传递给 CUDA 内核会调用其析构函数并过早释放内存
- 如何将Class对象传递给CUDA内核
- 具有虚拟继承传递到CUDA内核函数的对象
- 获取所有Windows内核对象及其安全权
- 在 cuda 内核中声明 CPP 对象
- 如何从wow64进程中检索特定内核对象的64位地址
- 将C++对象传递给 CUDA 内核
- 如何在进程之间共享内核对象,例如可等待计时器
- 如何获取内核对象的安全描述符
- 与c++相比,高效的Win32内核对象更受青睐
- 不可压缩的指针类型将int传递给内核对象中void(*)(void)类型的形参