我正在尝试使用 NtQueryInformationProcess 获取流程仪表回调,但它不断返回 STATUS_INVALID_INFO_CLASS。
我知道这个错误意味着 ProcessInformationClass 参数无效,但从我所做的谷歌搜索来看,ProcessInstrumentationCallback 看起来是一个真正的类,但只是隐藏的。
这是我的代码:
#define PROCESS_INSTRUMENTATION_CALLBACK 40
typedef struct
{
ULONG verision;
ULONG reserved;
PVOID callback;
} process_instrumentation_callback_information_t;
process_instrumentation_callback_information_t nirvana;
NTSTATUS status = manual_query_information_process(GetCurrentProcess(), (PROCESS_INFORMATION_CLASS)PROCESS_INSTRUMENTATION_CALLBACK, &nirvana, sizeof(process_instrumentation_callback_information_t), NULL);
if (!NT_SUCCESS(status))
{
logger::log("Unable to get callback: 0x%x\n", status);
return 1;
}
logger::log("Got callback\n");
我认为不可能从用户模式获取仪器回调地址。我刚刚从内核获取了地址并将其存储为偏移量,以便我可以在用户模式下使用它。