通過BIOS信息檢測虛擬機

VMware的虛擬機BIOS信息(太長,只顯示部分)如下:

代碼(msdn上面有代碼例子)如下,具體使用GetSystemFirmwareTable( )函數:

#include <stdio.h>
#include <windows.h>

// 定義BIOS信息結構體
struct RawSMBIOSData
{
    BYTE    Used20CallingMethod;
    BYTE    SMBIOSMajorVersion;
    BYTE    SMBIOSMinorVersion;
    BYTE    DmiRevision;
    DWORD    Length;
    BYTE    SMBIOSTableData[];
};

int main()
{
    int dwSize = GetSystemFirmwareTable('RSMB',0, NULL, 0);
    RawSMBIOSData* pBuffer = (RawSMBIOSData*)malloc(dwSize);
    memset(pBuffer,0,dwSize);
    int dwWriteSize=GetSystemFirmwareTable('RSMB',0,pBuffer,dwSize);
    if( dwWriteSize<=dwSize )
    {
		for( int i=0; i<pBuffer->Length; i++)
        {
			if(pBuffer->SMBIOSTableData[i] == 'V')
            {
				if(strncmp((const char*)&(pBuffer->SMBIOSTableData[i]),"VMware",6) == 0)
                {
					printf("程序運行在虛擬機中!!!\n");
                    break;
                }
            }
        }
    }
	free(pBuffer);
	system("pause");
    return 0;
}

運行結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章