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

[cpp]  view plain  copy
 
 在CODE上查看代码片
  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.   
  11.     // 进程架构未知,系统是x64的,可以利用IsWow64Process函数判断  
  12.     typedef BOOL(WINAPI *ISWOW64PROCESS)(HANDLE, PBOOL);  
  13.     ISWOW64PROCESS fnIsWow64Process;  
  14.     BOOL isWow64 = TRUE;  
  15.     fnIsWow64Process = (ISWOW64PROCESS)GetProcAddress(GetModuleHandle(TEXT("kernel32")), "IsWow64Process");  
  16.     if (fnIsWow64Process != nullptr)  
  17.         fnIsWow64Process(hProcess, &isWow64);  
  18.     return !isWow64;  
  19. }  

 

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

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

你可能感兴趣的:(判断指定进程是否为x64的方法(在ntdll判断某个x64函数是否存在))