我需要檢測(cè)我的應(yīng)用程序是否在虛擬OS實(shí)例中運(yùn)行。我找到了一篇文章,其中包含有關(guān)該主題的一些有用信息。同一篇文章出現(xiàn)在多個(gè)地方,我不確定原始來(lái)源。VMware實(shí)現(xiàn)了一個(gè)特殊的無(wú)效x86指令來(lái)返回有關(guān)其自身的信息,而VirtualPC使用了帶有幻數(shù)和帶有IN指令的I / O端口。這是可行的,但在兩種情況下似乎都是未記錄的行為。我認(rèn)為將來(lái)的VMWare或VirtualPC版本可能會(huì)更改該機(jī)制。有沒(méi)有更好的辦法??jī)煞N產(chǎn)品都有受支持的機(jī)制嗎?同樣,有沒(méi)有辦法檢測(cè)Xen或VirtualBox?我不擔(dān)心平臺(tái)故意隱藏自己的情況。例如,蜜罐使用虛擬化,但有時(shí)會(huì)掩蓋惡意軟件用來(lái)檢測(cè)它的機(jī)制。我不在乎我的應(yīng)用程序會(huì)認(rèn)為它沒(méi)有在這些蜜罐中進(jìn)行虛擬化,我只是在尋找“盡力而為”的解決方案。該應(yīng)用程序主要是Java,盡管我希望對(duì)此功能使用本機(jī)代碼和JNI。Windows XP / Vista支持是最重要的,盡管參考文章中描述的機(jī)制是x86的通用功能,并且不依賴于任何特定的OS工具。
3 回答

慕萊塢森
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
我認(rèn)為,依靠諸如SIDT損壞的虛擬化之類的技巧并不能真正起到幫助作用,因?yàn)橛布?huì)填補(bǔ)怪異而混亂的x86架構(gòu)留下的所有漏洞。最好的方法是游說(shuō)Vm提供程序,以一種標(biāo)準(zhǔn)的方式告訴您您在VM上-至少在用戶明確允許的情況下。但是,如果我們假設(shè)我們明確允許檢測(cè)到VM,那么我們也可以在其中放置可見(jiàn)標(biāo)記,對(duì)嗎?我建議僅使用一個(gè)告訴您您在VM上的文件來(lái)更新VM上的磁盤,例如,文件系統(tǒng)根目錄中的一個(gè)小文本文件。或檢查ETH0的MAC,并將其設(shè)置為給定的已知字符串。
添加回答
舉報(bào)
0/150
提交
取消