先說3種方法
**:#include
#include
bool ginvmware, ginvirtualpc;
bool vmwaretest()
}__except(exception_execute_handler)
return ginvmware;
}bool virtualpctest()
}__except(exception_execute_handler)
return ginvirtualpc;
}bool vmtest()
printf("idt = %08x\n" , xdt);
if (xdt > 0xd0000000)
else
__asm
printf("gdt = %08x\n" , xdt);
if (xdt > 0xd0000000)
else
return invm;
}int main()
else if (virtualpctest())
else if (vmtest())
else
getchar ();
return 1;
}ok,這樣vmware裡面基本都能檢測到
檢測虛擬機器,一般來說有3種方法:
1,是猥瑣法,比如系統中有沒有vmware類似的服務,程序等,檢查bios的資訊,虛擬裝置的名稱等等,這種方法是很猥瑣的,優點是防不勝防,缺點就是不準確,而且都能修改(注意:bios也是能修改的)。
2,是模擬漏洞法,由於虛擬機器畢竟不是真機,模擬上面是有一定的漏洞的,上面的vmtest就是漏洞法。優點是準確,基本上100%可以確定,因為是模擬的漏洞,所以不容易修改,缺點基本上沒有。
3,是後門法,虛擬機器需要和host進行通訊,利用通訊檢測虛擬機器,如上面的那個vmware.getversion的後門。優點是準確,缺點是可以遮蔽掉後門。
所以,一般來說都是用後門法,高階一點用模擬漏洞。
隨著硬體虛擬化技術的迅猛發展,模擬的漏洞越來越少,開了vt功能後,使用vmware 6.0以上基本上滅掉了所有模擬的漏洞,後門法,patch一下主程式和guest的tools。
下面圖是我修改過的開了vt-x的vmware,用上面的**是檢測不出來的
注意紅框,如果修改配置檔案遮蔽後門,vmware tools是無法啟動的。我這裡是patch了vmware tools和vmware-vmx.exe的主程式實現的,後來想想,還是避不開猥瑣的校驗。。
能過99%的anti vmware,主要還是靠vt技術,實在太強大了。
由於某些原因,上面的模擬漏洞我只貼了mj0011的**,還有幾個漏洞(暫時不公開寫出來,當然無法對付vmware的)可以對付其他幾款虛擬機器,比如vbox(開了vt也被檢測)。
虛擬機器檢測與反檢測相關
虛擬機器軟體的漏洞和虛擬機器執行環境的檢測與反檢測 一 虛擬機器軟體的漏洞和虛擬機器執行環境的檢測與反檢測 二 vmware的檢測與反檢測 檢測虛擬機器彙編 漏洞法檢測虛擬機器 虛擬機器檢測技術剖析 檢測原始碼 include include bool ginvmware,ginvirtualpc ...
禁止程式檢測vmware
isolation.tools.getptrlocation.disable true isolation.tools.setptrlocation.disable true isolation.tools.setversion.disable true isolation.tools.getver...
解決目標檢測中的難分樣本(漏檢測與誤檢測問題)
asdn網路使用roi池層提取的功能作為輸入影象補丁。asdn網路比 遮擋 退出掩碼,然後將其用於丟棄特徵值並傳遞到fast rcnn的分類塔。對抗空間丟棄網路 asdn 它學習如何封閉給定的目標,使得frcn難以對其進行分類。我們在本文中考慮的第二種型別的生成是變形。在這種情況下,我們提出了對抗空...