程式檢測自身是否執行在虛擬機器下

2021-05-23 10:30:53 字數 687 閱讀 5187

來自:http://www.codeproject.com/kb/system/vmdetect.aspx

分析病毒的時候人們通常在vmware等虛擬機器下執行,以檢視病毒的執行路徑或者提取特徵碼。但是近年來出現許多抗虛擬機器檢測的病毒。也就是說,在虛擬機器下執行的時候,病毒會隱匿其惡意行為,使人們無法檢測得到。

上面那篇文章是codeproject的鏈結。它詳細說明了程式如何檢測自身是否在虛擬機器下並且提供了源**。我用我的windows xp測試通過。

其實檢測vmware的原理很簡單。vmware存在乙個隱藏通道,這個通道用於虛擬機器和實體機的資訊交流。文中的**檢測這個通道是否存在,並用try...catch來得到結果——如果try和catch之間的那段**不出現異常,則表示在虛擬機器裡。如果出現異常,則表示在虛擬機器外。(既沒有虛擬機器)

對抗這種抗虛擬機器技術的方法,我看過一篇**《efficient detection of split personalities in malware》。我看了一遍,可惜我還沒徹底看懂,以後再補充。

作為測試,可以新建乙個vc++工程並且把下面**複製貼上:

#include

#include

bool isinsidevmware()

}__except(exception_execute_handler)

return rc;

}int main()

判斷程式是否執行在虛擬機器裡 收藏

判讀程式是否執行在虛擬機器裡 include include isinsidevpc s exception filter dword forceinline isinsidevpc exceptionfilter lpexception pointers ep high level languag...

如何判斷當前程式是否執行在虛擬機器內

最近寫程式,碰到要檢測程式是否執行在虛擬機器內的問題。在網上找了一下,找到下面兩個函式,可以檢測程式是否執行在virtual machine中,支援vmware 和virtual pc檢測.主要的原理,都是利用virtual machine往往支援一些真實pc不支援的指令.isinsidevpc s...

如何判斷當前程式是否執行在虛擬機器內

最近寫程式,碰到要檢測程式是否執行在虛擬機器內的問題。在網上找了一下,找到下面兩個函式,可以檢測程式是否執行在virtual machine中,支援vmware 和virtual pc檢測.主要的原理,都是利用virtual machine往往支援一些真實pc不支援的指令.isinsidevpc s...