waliedassar

Detect VirtualBox (9 methods)

Aug 16th, 2012
6,396
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //http://waleedassar.blogspot.com - (@waleedassar)
  2. #include "stdafx.h"
  3. #include "windows.h"
  4.  
  5.  
  6. void ToLower(unsigned char* Pstr)
  7. {
  8.     char* P=(char*)Pstr;
  9.     unsigned long length=strlen(P);
  10.     for(unsigned long i=0;i<length;i++) P[i]=tolower(P[i]);
  11.     return;
  12. }
  13.  
  14. int main(int argc, char* argv[])
  15. {
  16.     //method 1
  17.     HKEY HK=0;
  18.     if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HARDWARE\\ACPI\\DSDT\\VBOX__",0,KEY_READ,&HK)==ERROR_SUCCESS)
  19.     {
  20.                 MessageBox(0,"VirtualBox detected","waliedassar",0);
  21.                 ExitProcess(1);
  22.     }
  23.  
  24.     //method 2 -- requires Guest Additions to be installed.
  25.     HANDLE hF1=CreateFile("\\\\.\\VBoxMiniRdrDN",GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,0,OPEN_EXISTING,0,0);
  26.     if(hF1!=INVALID_HANDLE_VALUE)
  27.     {
  28.         MessageBox(0,"VirtualBox detected","waliedassar",0);
  29.         ExitProcess(2);
  30.     }
  31.  
  32.  
  33.     //method 3 -- requires Guest Additions to be installed
  34.     HMODULE hM1=LoadLibrary("VBoxHook.dll");
  35.     if(hM1)
  36.     {
  37.         MessageBox(0,"VirtualBox detected","waliedassar",0);
  38.         ExitProcess(3);
  39.     }
  40.  
  41.     //method 4 -- requires Guest Additions to be installed
  42.     HK=0;
  43.     if( (ERROR_SUCCESS==RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Oracle\\VirtualBox Guest Additions",0,KEY_READ,&HK)) && HK)
  44.     {
  45.         MessageBox(0,"VirtualBox detected","waliedassar",0);
  46.         RegCloseKey(HK);
  47.         ExitProcess(4);
  48.     }
  49.  
  50.     //method 5
  51.     HK=0;
  52.     char* subkey="SYSTEM\\CurrentControlSet\\Enum\\IDE";
  53.     if( (ERROR_SUCCESS==RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_READ,&HK)) && HK )
  54.     {
  55.         unsigned long n_subkeys=0;
  56.         unsigned long max_subkey_length=0;
  57.         if(ERROR_SUCCESS==RegQueryInfoKey(HK,0,0,0,&n_subkeys,&max_subkey_length,0,0,0,0,0,0))
  58.         {
  59.             if(n_subkeys)  //Usually n_subkeys are 2
  60.             {
  61.                   char* pNewKey=(char*)LocalAlloc(LMEM_ZEROINIT,max_subkey_length+1);
  62.                   for(unsigned long i=0;i<n_subkeys;i++)  //Usually n_subkeys are 2
  63.                   {
  64.                           memset(pNewKey,0,max_subkey_length+1);
  65.                           HKEY HKK=0;
  66.                           if(ERROR_SUCCESS==RegEnumKey(HK,i,pNewKey,max_subkey_length+1))
  67.                           {
  68.                                if((RegOpenKeyEx(HK,pNewKey,0,KEY_READ,&HKK)==ERROR_SUCCESS)  && HKK)
  69.                                {
  70.                                      unsigned long nn=0;
  71.                                      unsigned long maxlen=0;
  72.                                      RegQueryInfoKey(HKK,0,0,0,&nn,&maxlen,0,0,0,0,0,0);
  73.                                      char* pNewNewKey=(char*)LocalAlloc(LMEM_ZEROINIT,maxlen+1);
  74.                                      if(RegEnumKey(HKK,0,pNewNewKey,maxlen+1)==ERROR_SUCCESS)
  75.                                      {
  76.                                                HKEY HKKK=0;
  77.                                                if(RegOpenKeyEx(HKK,pNewNewKey,0,KEY_READ,&HKKK)==ERROR_SUCCESS)
  78.                                                {
  79.                                                     unsigned long size=0xFFF;
  80.                                                     unsigned char ValName[0x1000]={0};
  81.                                                     if(RegQueryValueEx(HKKK,"FriendlyName",0,0,ValName,&size)==ERROR_SUCCESS)
  82.                                                     {
  83.                                                          ToLower(ValName);
  84.                                                          if(strstr((char*)ValName,"vbox"))
  85.                                                          {
  86.                                                             MessageBox(0,"VirtualBox detected","waliedassar",0);
  87.                                                             ExitProcess(5);
  88.                                                          }
  89.                                                     }
  90.                                                     RegCloseKey(HKKK);
  91.                                                }
  92.                                      }
  93.                                      LocalFree(pNewNewKey);
  94.                                      RegCloseKey(HKK);
  95.                                }
  96.                           }
  97.                   }
  98.                   LocalFree(pNewKey);
  99.             }
  100.         }
  101.         RegCloseKey(HK);
  102.     }
  103.  
  104.     //method 6
  105.     HK=0;
  106.     if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HARDWARE\\DESCRIPTION\\System",0,KEY_READ,&HK)==ERROR_SUCCESS)
  107.     {
  108.         unsigned long type=0;
  109.         unsigned long size=0x100;
  110.         char* systembiosversion=(char*)LocalAlloc(LMEM_ZEROINIT,size+10);
  111.         if(ERROR_SUCCESS==RegQueryValueEx(HK,"SystemBiosVersion",0,&type,(unsigned char*)systembiosversion,&size))
  112.         {
  113.               ToLower((unsigned char*)systembiosversion);
  114.               if(type==REG_SZ||type==REG_MULTI_SZ)
  115.               {
  116.                       if(strstr(systembiosversion,"vbox"))
  117.                       {
  118.                                     MessageBox(0,"VirtualBox detected","waliedassar",0);
  119.                                     ExitProcess(6);
  120.                       }
  121.               }
  122.         }
  123.         LocalFree(systembiosversion);
  124.  
  125.         type=0;
  126.         size=0x200;
  127.         char* videobiosversion=(char*)LocalAlloc(LMEM_ZEROINIT,size+10);
  128.         if(ERROR_SUCCESS==RegQueryValueEx(HK,"VideoBiosVersion",0,&type,(unsigned char*)videobiosversion,&size))
  129.         {
  130.             if(type==REG_MULTI_SZ)
  131.             {
  132.                 char* video=videobiosversion;
  133.                 while(*(unsigned char*)video)
  134.                 {
  135.                     ToLower((unsigned char*)video);
  136.                     if(strstr(video,"oracle")||strstr(video,"virtualbox") )
  137.                     {
  138.                                     MessageBox(0,"VirtualBox detected","waliedassar",0);
  139.                                     ExitProcess(6);
  140.                     }
  141.                     video=&video[strlen(video)+1];
  142.                 }
  143.             }
  144.         }
  145.         LocalFree(videobiosversion);
  146.         RegCloseKey(HK);
  147.     }
  148.     //method 7 - requires guest additions to be installed.
  149.     HANDLE hxx=CreateFile("\\\\.\\pipe\\VBoxTrayIPC",GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
  150.     if(hxx!=INVALID_HANDLE_VALUE)
  151.     {
  152.             MessageBox(0,"VirtualBox detected","waliedassar",0);
  153.             CloseHandle(hxx);
  154.             ExitProcess(7);
  155.     }
  156.         //method 8 - requires guest additions installed
  157.         HWND hY1=FindWindow("VBoxTrayToolWndClass",0);
  158.     HWND hY2=FindWindow(0,"VBoxTrayToolWnd");
  159.     if(hY1 || hY2)
  160.     {
  161.         MessageBox(0,"VirtualBox detected","waliedassar",0);
  162.         ExitProcess(8);
  163.     }
  164.    
  165.        //method 9
  166.        unsigned long pnsize=0x1000;
  167.        char* provider=(char*)LocalAlloc(LMEM_ZEROINIT,pnsize);
  168.        int retv=WNetGetProviderName(WNNC_NET_RDR2SAMPLE,provider,&pnsize);
  169.        if(retv==NO_ERROR)
  170.        {
  171.         if(lstrcmpi(provider,"VirtualBox Shared Folders")==0)
  172.         {
  173.             MessageBox(0,"VirtualBox detected","waliedassar",0);
  174.             ExitProcess(9);
  175.         }
  176.        }
  177.        return 0;
  178. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×