在我上次面試的一次面試中,我被問到一個問題,直到現在我甚至都沒有找到解決問題的線索。承認虛擬環境
因爲這是非常有趣的問題我想也許這裏有人會有一個想法。
退出簡單問題: 「建議構建應用程序的方法,以便能夠識別它是否在虛擬機上運行。」 (虛擬機不是指像CLR或JVM之類的東西,而是指可以使用VMware構建的完全虛擬化環境)
任何想法?
在我上次面試的一次面試中,我被問到一個問題,直到現在我甚至都沒有找到解決問題的線索。承認虛擬環境
因爲這是非常有趣的問題我想也許這裏有人會有一個想法。
退出簡單問題: 「建議構建應用程序的方法,以便能夠識別它是否在虛擬機上運行。」 (虛擬機不是指像CLR或JVM之類的東西,而是指可以使用VMware構建的完全虛擬化環境)
任何想法?
看看Thwarting Virtual Machine Detection,如何做相反的(停止應用程序檢測,它是在虛擬機上,以防止惡意程序更改其行爲運行)介紹
此演示文稿中列出的許多那通常是用來檢測虛擬機環境不同的機制:
最終卻沒有100%可靠以檢測您是否在虛擬機上運行 - 如果目標是提供完全無法檢測的環境,那麼可以「固定」這些機制中的每一個,以便VM完全無法檢測到。
我還看到了直接從處理器緩存,分支預測和其他難以虛擬化的信息中獲取數據的實例,以便檢測指示虛擬化的異常情況。基本上,虛擬化是虛擬化和檢測之間的軍備競賽。 – adelphus 2012-02-28 12:54:54
您確定這不表示VMware? Java應用程序只能在JVM內部運行(對於C#/ CLR也是如此)。 – Groo 2012-02-28 09:55:27
對不起,我修正了它 – MoShe 2012-02-28 11:16:28
我對你爲什麼要檢測這個問題背後的原因感興趣。 – CodeCaster 2012-02-28 11:34:37