曰本美女∴一区二区特级A级黄色大片, 国产亚洲精品美女久久久久久2025, 页岩实心砖-高密市宏伟建材有限公司, 午夜小视频在线观看欧美日韩手机在线,国产人妻奶水一区二区,国产玉足,妺妺窝人体色WWW网站孕妇,色综合天天综合网中文伊,成人在线麻豆网观看

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

反虛擬機技術合集2

jf_78858299 ? 來源:看雪學苑 ? 作者: houjingyi ? 2023-02-14 13:45 ? 次閱讀

4.根據(jù)特定的文件夾或文件信息

通過查找磁盤中是否存在特定的文件夾或文件,判斷當前是否在虛擬機中。VMware虛擬機中通常會有路徑C:\\Program Files\\VMware\\VMware Tools\\;VirtualBox 虛擬機中通常會有路徑 C:\\Program Files\\Oracle\\VirtualBox Guest Additions\\。

圖片

圖片

BOOL CheckVMware()  
{  
   if (PathIsDirectory("C:\\\\Program Files\\\\VMware\\\\VMware Tools\\\\") == 0)  
   {  
       return FALSE;  
   }  
   else  
   {  
       return TRUE;  
   }  
}
BOOL CheckVirtualBox()  
{  
   if (PathIsDirectory("C:\\\\Program Files\\\\Oracle\\\\VirtualBox Guest Additions\\\\") == 0)  
   {  
       return FALSE;  
   }  
   else  
   {  
       return TRUE;  
   }  
}

5.根據(jù)特定注冊表信息

通過讀取主機具有虛擬機特性的注冊表位置來判斷是否處于虛擬機環(huán)境中。針對VMware可以判斷注冊表項HKEY_CLASSES_ROOT\\Applications\\VMwareHostOpen.exe;針對VirtualBox可以判斷注冊表項HKEY_LOCAL_MACHINE\\SOFTWARE\\Oracle\\VirtualBox Guest Additions。當然,注冊表中能被檢測出的位置很多,這里只是舉個例子。

圖片

圖片

BOOL CheckVMWare()  
{  
   HKEY hkey;  
   if (RegOpenKey(HKEY_CLASSES_ROOT, "\\\\Applications\\\\VMwareHostOpen.exe", &hkey) == ERROR_SUCCESS)  
   {  
       return TRUE;  
   }  
   else  
   {  
       return FALSE;  
   }  
}
BOOL CheckVirtualBox()  
{  
   HKEY hkey;  
   if (RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\\\Oracle\\\\VirtualBox Guest Additions", &hkey) == ERROR_SUCCESS)  
   {  
       return TRUE;  
   }  
   else  
   {  
       return FALSE;  
   }  
}

6.根據(jù)特定服務名

通過獲取主機當前具有VMware特性的服務信息,判斷當前主機是否為虛擬機。在VMware中通常會存在VMware物理磁盤助手服務和VMware Tools服務等;在VirtualBox中通常會存在VirtualBox Guest Additions Service服務等。

圖片

圖片

BOOL CheckVMWare()  
{  
   int menu = 0;    
   //打開系統(tǒng)服務控制器    
   SC_HANDLE SCMan = OpenSCManager(NULL, NULL, SC_MANAGER_ENUMERATE_SERVICE);  
   if(SCMan == NULL)    
   {  
       cout << GetLastError() << endl;  
       printf("OpenSCManager Eorror/n");    
       return -1;    
   }    
   //保存系統(tǒng)服務的結構  
   LPENUM_SERVICE_STATUSA service_status;    
   DWORD cbBytesNeeded = NULL;    
   DWORD ServicesReturned = NULL;    
   DWORD ResumeHandle = NULL;    
   service_status = (LPENUM_SERVICE_STATUSA)LocalAlloc(LPTR, 1024 * 64);    
   //獲取系統(tǒng)服務的簡單信息    
   bool ESS = EnumServicesStatusA(SCMan, //系統(tǒng)服務句柄    
       SERVICE_WIN32, //服務的類型    
       SERVICE_STATE_ALL,  //服務的狀態(tài)    
       (LPENUM_SERVICE_STATUSA)service_status,  //輸出參數(shù),系統(tǒng)服務的結構    
       1024 * 64,  //結構的大小    
       &cbBytesNeeded, //輸出參數(shù),接收返回所需的服務    
       &ServicesReturned, //輸出參數(shù),接收返回服務的數(shù)量    
       &ResumeHandle); //輸入輸出參數(shù),第一次調(diào)用必須為0,返回為0代表成功    
   if(ESS == NULL)    
   {    
       printf("EnumServicesStatus Eorror/n");    
       return -1;    
   }    
   for(int i = 0; i < ServicesReturned; i++)    
   {    
       if (strstr(service_status[i].lpDisplayName, "VMware Tools")!=NULL || strstr(service_status[i].lpDisplayName, "VMware 物理磁盤助手服務")!=NULL)  
       {  
           return TRUE;  
       }  
   }    
   //關閉服務管理器的句柄  
   CloseServiceHandle(SCMan);  
   return FALSE;  
}
BOOL CheckVirtualPC()  
{  
   int menu = 0;    
   //打開系統(tǒng)服務控制器    
   SC_HANDLE SCMan = OpenSCManager(NULL, NULL, SC_MANAGER_ENUMERATE_SERVICE);  
   if(SCMan == NULL)    
   {  
       cout << GetLastError() << endl;  
       printf("OpenSCManager Eorror/n");    
       return -1;    
   }    
   //保存系統(tǒng)服務的結構  
   LPENUM_SERVICE_STATUSA service_status;    
   DWORD cbBytesNeeded = NULL;    
   DWORD ServicesReturned = NULL;    
   DWORD ResumeHandle = NULL;    
   service_status = (LPENUM_SERVICE_STATUSA)LocalAlloc(LPTR, 1024 * 64);    
   //獲取系統(tǒng)服務的簡單信息    
   bool ESS = EnumServicesStatusA(SCMan, //系統(tǒng)服務句柄    
       SERVICE_WIN32, //服務的類型    
       SERVICE_STATE_ALL,  //服務的狀態(tài)    
       (LPENUM_SERVICE_STATUSA)service_status,  //輸出參數(shù),系統(tǒng)服務的結構    
       1024 * 64,  //結構的大小    
       &cbBytesNeeded, //輸出參數(shù),接收返回所需的服務    
       &ServicesReturned, //輸出參數(shù),接收返回服務的數(shù)量    
       &ResumeHandle); //輸入輸出參數(shù),第一次調(diào)用必須為0,返回為0代表成功    
   if(ESS == NULL)    
   {    
       printf("EnumServicesStatus Eorror/n");    
       return -1;    
   }    
   for(int i = 0; i < ServicesReturned; i++)    
   {    
       if (strstr(service_status[i].lpDisplayName, "Virtual Machine")!=NULL)  
       {  
           return TRUE;  
       }  
   }    
   //關閉服務管理器的句柄  
   CloseServiceHandle(SCMan);  
   return FALSE;  
}
BOOL CheckVirtualBox()  
{  
   int menu = 0;    
   //打開系統(tǒng)服務控制器    
   SC_HANDLE SCMan = OpenSCManager(NULL, NULL, SC_MANAGER_ENUMERATE_SERVICE);  
   if(SCMan == NULL)    
   {  
       cout << GetLastError() << endl;  
       printf("OpenSCManager Eorror/n");    
       return -1;    
   }    
   //保存系統(tǒng)服務的結構  
   LPENUM_SERVICE_STATUSA service_status;    
   DWORD cbBytesNeeded = NULL;    
   DWORD ServicesReturned = NULL;    
   DWORD ResumeHandle = NULL;    
   service_status = (LPENUM_SERVICE_STATUSA)LocalAlloc(LPTR, 1024 * 64);    
   //獲取系統(tǒng)服務的簡單信息    
   bool ESS = EnumServicesStatusA(SCMan, //系統(tǒng)服務句柄    
       SERVICE_WIN32, //服務的類型    
       SERVICE_STATE_ALL,  //服務的狀態(tài)    
       (LPENUM_SERVICE_STATUSA)service_status,  //輸出參數(shù),系統(tǒng)服務的結構    
       1024 * 64,  //結構的大小    
       &cbBytesNeeded, //輸出參數(shù),接收返回所需的服務    
       &ServicesReturned, //輸出參數(shù),接收返回服務的數(shù)量    
       &ResumeHandle); //輸入輸出參數(shù),第一次調(diào)用必須為0,返回為0代表成功    
   if(ESS == NULL)    
   {    
       printf("EnumServicesStatus Eorror/n");    
       return -1;    
   }    
   for(int i = 0; i < ServicesReturned; i++)    
   {    
       if (strstr(service_status[i].lpDisplayName, "VirtualBox Guest")!=NULL)  
       {  
           return TRUE;  
       }  
   }    
   //關閉服務管理器的句柄  
   CloseServiceHandle(SCMan);  
   return FALSE;  
}

7.根據(jù)時間差

由于在虛擬機中,代碼的運行速度通常不如真實主機。所以惡意代碼通過運行一段特定的代碼來比較這段代碼在虛擬機和真實主機之中的相對運行時間,以此來判斷是否處于虛擬機之中。

BOOL CheckVMWare()  
{  
   __asm  
   {  
       rdtsc  
       xchg ebx,eax  
       rdtsc  
       sub eax,ebx  
       cmp eax,0xFF  
       jg detected  
   }  
   return FALSE;  
detected:  
   return TRUE;  
}
BOOL CheckVirtualPC()  
{  
   __asm  
   {  
       rdtsc  
       xchg ebx,eax  
       rdtsc  
       sub eax,ebx  
       cmp eax,0xFF  
       jg detected  
   }  
   return FALSE;  
detected:  
   return TRUE;  
}
BOOL CheckVirtualBox()  
{  
   __asm  
   {  
       rdtsc  
       xchg ebx,eax  
       rdtsc  
       sub eax,ebx  
       cmp eax,0xFF  
       jg detected  
   }  
   return FALSE;  
detected:  
   return TRUE;  
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Mac
    Mac
    +關注

    關注

    0

    文章

    1115

    瀏覽量

    52474
  • 惡意代碼
    +關注

    關注

    0

    文章

    12

    瀏覽量

    7716
  • 虛擬機
    +關注

    關注

    1

    文章

    958

    瀏覽量

    28926
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    什么是虛擬機?虛擬機真的那么好用嗎?

    在日新月異的科技世界中,虛擬技術如同一座橋梁,連接著現(xiàn)實與數(shù)字的鴻溝,為我們打開了全新的計算維度。虛擬機,這一概念,自其誕生以來,就以其獨特的魅力和強大的功能,深深地影響了軟件開發(fā)、系統(tǒng)測試和云
    的頭像 發(fā)表于 07-06 08:05 ?463次閱讀
    什么是<b class='flag-5'>虛擬機</b>?<b class='flag-5'>虛擬機</b>真的那么好用嗎?

    有關虛擬機虛擬技術的幾點詮注

    虛擬機虛擬技術給計算機應用注入了新的研究與開發(fā)點,同時也存在諸多不利因素。本文綜述了虛擬機虛擬
    發(fā)表于 06-22 18:04 ?36次下載

    虛擬機虛擬技術

    虛擬機虛擬技術給計算機應用注入了新的研究與開發(fā)點,同時也存在諸多不利因素。本文綜述了虛擬機虛擬
    發(fā)表于 09-07 10:15 ?13次下載

    基于虛擬機技術的DSC仿真系統(tǒng)設計

    提出了基于虛擬機技術的DCS仿真系統(tǒng)的實現(xiàn)方式,描述了虛擬控制器的具體實現(xiàn)方法及虛擬機技術的其他應用。
    發(fā)表于 12-03 17:26 ?27次下載
    基于<b class='flag-5'>虛擬機</b><b class='flag-5'>技術</b>的DSC仿真系統(tǒng)設計

    基于虛擬機技術的DCS仿真系統(tǒng)設計與實現(xiàn)

    提出了基于虛擬機技術的DCS仿真系統(tǒng)的實現(xiàn)方式,描述了虛擬控制器的具體實現(xiàn)方法及虛擬機技術的其他應用。
    發(fā)表于 01-16 15:04 ?2347次閱讀
    基于<b class='flag-5'>虛擬機</b><b class='flag-5'>技術</b>的DCS仿真系統(tǒng)設計與實現(xiàn)

    虛擬機:QEMU虛擬機和主機無線網(wǎng)絡通訊設置

    虛擬機:QEMU虛擬機和主機無線網(wǎng)絡通訊設置
    的頭像 發(fā)表于 06-22 10:19 ?5677次閱讀
    <b class='flag-5'>虛擬機</b>:QEMU<b class='flag-5'>虛擬機</b>和主機無線網(wǎng)絡通訊設置

    KVM虛擬機管理和基本使用

    KVM — 全稱是基于內(nèi)核的虛擬機(Kernel-based Virtual Machine)是一個開源軟件,基于內(nèi)核的虛擬技術,實際是嵌入系統(tǒng)的一個虛擬化模塊,通過優(yōu)化內(nèi)核來使用
    的頭像 發(fā)表于 02-07 09:20 ?1550次閱讀

    虛擬機技術合集1

    惡意代碼編寫者經(jīng)常使用虛擬機技術逃避分析,這種技術可以檢測自己是否運行在虛擬機中。如果惡意代碼探測到自己在
    的頭像 發(fā)表于 02-14 13:45 ?1433次閱讀

    虛擬機技術合集3

    惡意代碼編寫者經(jīng)常使用虛擬機技術逃避分析,這種技術可以檢測自己是否運行在虛擬機中。如果惡意代碼探測到自己在
    的頭像 發(fā)表于 02-14 13:45 ?817次閱讀
    <b class='flag-5'>反</b><b class='flag-5'>虛擬機</b><b class='flag-5'>技術</b><b class='flag-5'>合集</b>3

    虛擬機技術合集4

    惡意代碼編寫者經(jīng)常使用虛擬機技術逃避分析,這種技術可以檢測自己是否運行在虛擬機中。如果惡意代碼探測到自己在
    的頭像 發(fā)表于 02-14 13:46 ?1256次閱讀
    <b class='flag-5'>反</b><b class='flag-5'>虛擬機</b><b class='flag-5'>技術</b><b class='flag-5'>合集</b>4

    linux虛擬機使用教程

    引言:Linux虛擬機是一種方便且常用的技術,它允許用戶在現(xiàn)有操作系統(tǒng)的基礎上創(chuàng)建和運行另一個獨立的操作系統(tǒng)。在本篇文章中,我們將提供一份詳盡的教程,幫助你了解如何安裝、配置和使用Linux虛擬機
    的頭像 發(fā)表于 11-17 10:06 ?1875次閱讀

    Docker與虛擬機的區(qū)別

    Docker和虛擬機是兩種不同的虛擬技術,它們在實現(xiàn)方式、資源消耗、運行性能等方面存在許多差異。本文將會詳細介紹它們的區(qū)別。 一、實現(xiàn)方式 1.1 虛擬機
    的頭像 發(fā)表于 11-23 09:37 ?1w次閱讀

    怎么安裝linux虛擬機

    在計算機領域,虛擬機是一種軟件程序,它允許在主操作系統(tǒng)上運行多個虛擬操作系統(tǒng)。Linux虛擬機在開發(fā)、測試和學習等環(huán)境中得到廣泛應用。本文將詳細介紹如何安裝Linux虛擬機,并提供一個
    的頭像 發(fā)表于 11-23 10:50 ?1315次閱讀

    虛擬機ubuntu怎么聯(lián)網(wǎng)

    虛擬機ubuntu怎么聯(lián)網(wǎng)? 虛擬機(Virtual Machine)是運行在物理(Host Machine)上的虛擬操作系統(tǒng)環(huán)境。在虛擬機
    的頭像 發(fā)表于 12-27 16:51 ?1285次閱讀

    虛擬機數(shù)據(jù)恢復—KVM虛擬機被誤刪除的數(shù)據(jù)恢復案例

    虛擬機數(shù)據(jù)恢復環(huán)境: Linux操作系統(tǒng)服務器,EXT4文件系統(tǒng)。服務器中有數(shù)臺KVM虛擬機虛擬機1:主數(shù)據(jù)庫服務器 虛擬磁盤:系統(tǒng)盤(qcow
    的頭像 發(fā)表于 08-07 13:33 ?676次閱讀
    <b class='flag-5'>虛擬機</b>數(shù)據(jù)恢復—KVM<b class='flag-5'>虛擬機</b>被誤刪除的數(shù)據(jù)恢復案例