5. 操作系统类型判断
a. 系统类型获取
如果病毒是有针对某个系统版本而设置的,传播到的系统如果不是目标版本系统那么就不爆发,以免运行出错进而被用户察觉。这个特别是程序需要使用到shellcode或exploit的时候特别重要。
GetVersionEx可以获取操作系统的版本
SYSTEM_INFO info;
GetSystemInfo(&info);
OSVERSIONINFOEX os;
os.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);
GetVersionEx((OSVERSIONINFO*)&os);
我们根据os.dwMajorVersion 的值来判断操作系统主版本,根据os.dwMinorVersion 来判断操作系统的副版本。
如:


如果要判断是否64位系统,MSDN推荐的是使用IsWow64:
//判断是否64位系统,是的话返回TRUE
BOOL IsWow64(){
typedef BOOL(WINAPI* LPFN_ISWOW64PROCESS)(HANDLE,PBOOL);
LPFN_ISWOW64PROCESS fnIsWow64Process;
BOOL bIsWow64=FALSE;
fnIsWow64Process=(LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(L"kernel32"),"IsWow64Process");
if(NULL!=fnIsWow64Process){
fnIsWow64Process(GetCurrentProcess(),&bIsWow64);
}
returnbIsWow64;
}