我正在尝试在 Windows 8 中获取 64 个远程线程的 TEB。
按照这里的定义,我这样做:
sz = sizeof(NTSTATUS) + sizeof(PTEB) + sizeof(HANDLE) + sizeof(HANDLE) + sizeof(ULONG_PTR) + sizeof(LONG) + sizeof(LONG);
infoBuff = malloc(sz);
stat = NtQueryInformationThread(mainThread, (THREADINFOCLASS) 0, infoBuff, sz, NULL);
if (!NT_SUCCESS(stat)) {
printf ("ERROR (code 0x%x): Cannot get information about about the main TEB. \n", stat);
return 1;
}
如果我为 32 位编译,sz 为 0x1C,调用成功返回。如果我为 64 位编译,sz 为 0x2C,但调用返回状态 0xC0000004:STATUS_INFO_LENGTH_MISMATCH。
知道 64 位目标上 _THREAD_BASIC_INFORMATION 的正确大小是多少?或者也许是获得远程TEB的另一种方式?
谢谢,亚历克斯