判断指定进程是否为x64的方法(在ntdll判断某个x64函数是否存在)

时间:2023-03-09 15:40:48
判断指定进程是否为x64的方法(在ntdll判断某个x64函数是否存在)
  1. BOOL IsWow64ProcessEx(HANDLE hProcess)
  2. {
  3. // 如果系统是x86的,那么进程就不可能有x64
  4. bool isX86 = false;
  5. #ifndef _WIN64
  6. isX86 = GetProcAddress(GetModuleHandle(TEXT("ntdll")), "NtWow64DebuggerCall") == nullptr ? TRUE : FALSE;
  7. #endif
  8. if (isX86)
  9. return FALSE;
  10. // 进程架构未知,系统是x64的,可以利用IsWow64Process函数判断
  11. typedef BOOL(WINAPI *ISWOW64PROCESS)(HANDLE, PBOOL);
  12. ISWOW64PROCESS fnIsWow64Process;
  13. BOOL isWow64 = TRUE;
  14. fnIsWow64Process = (ISWOW64PROCESS)GetProcAddress(GetModuleHandle(TEXT("kernel32")), "IsWow64Process");
  15. if (fnIsWow64Process != nullptr)
  16. fnIsWow64Process(hProcess, &isWow64);
  17. return !isWow64;
  18. }

先用OpenProcess打开目标进程,再把句柄传进去就OK了。

http://blog.****.net/aqtata/article/details/18361209