
VMaware (VM+ Aware)是用於虛擬機檢測的跨平台C ++庫。
圖書館是:
# include " vmaware.hpp "
# include < iostream >
int main () {
if ( VM::detect ()) {
std::cout << " Virtual machine detected! " << " n " ;
} else {
std::cout << " Running on baremetal " << " n " ;
}
std::cout << " VM name: " << VM::brand () << " n " ;
std::cout << " VM type: " << VM::type () << " n " ;
std::cout << " VM certainty: " << ( int ) VM::percentage () << " % " << " n " ;
}可能的輸出:
Virtual machine detected!
VM name: VirtualBox
VM type: Hypervisor (type 2)
VM certainty: 100%

該項目還利用了圖書館可以做的全部潛力,提供了一個很小但方便的CLI工具。它將為您提供有關其運行環境的各種細節。

要安裝庫,請在您的項目的最新版本部分中下載vmaware.hpp文件。二進製文件也位於那裡。不需要CMAKE或共享對象鏈接,從字面上看,這很簡單。
但是,如果您想要完整的項目(帶有<vmaware.hpp>和CLI工具的全球訪問標題),請按照以下命令:
git clone https://github.com/kernelwernel/VMAware
cd VMAwaresudo dnf/apt/yum update -y # change this to whatever your distro is
mkdir build
cd build
cmake ..
sudo make installcmake -S . -B build/ -G " Visual Studio 16 2019 " # edit this
set ( DIRECTORY "/path/to/your/directory/" )
# if you want the MIT version, toggle this to ON
option (MIT "MIT version" OFF )
if (MIT)
set (EXTENSION "_MIT" )
else ()
set (EXTENSION "" )
endif ()
set ( DESTINATION " ${DIRECTORY} vmaware ${EXTENSION} .hpp" )
if ( NOT EXISTS ${DESTINATION} )
message ( STATUS "Downloading VMAware" )
set (URL "https://github.com/kernelwernel/VMAware/releases/latest/download/vmaware ${EXTENSION} .hpp" )
file (DOWNLOAD ${URL} ${DESTINATION} SHOW_PROGRESS )
else ()
message ( STATUS "VMAware already downloaded, skipping" )
endif ()您可以在此處查看完整的文檔。提供了所有詳細信息,例如功能,技術,設置和示例。相信我,這不會太嚇人;)
它利用了低級(CPU,GPU,HDD和固件)和高級反VM技術的全面列表,這些技術被計入得分系統。每個技術的得分(0-100)是任意給出的,並且每種檢測到VM的技術都將其分數添加到一個累積點中,在該點上,閾值點號將決定它是否實際運行在VM中。
它專為安全研究人員,VM工程師,遊戲玩家開發人員以及幾乎所有需要實用且固定的VM檢測機制的人而設計。例如,如果您要製作VM,並且正在測試隱藏自身的有效性,則圖書館很合適。如果您是遊戲開發人員/專有軟件開發人員,則該庫對挫敗反向工程師有用。如果您是惡意軟件分析師,並且想檢查VM的隱藏功能,那麼這將是基準對VM進行良好聯繫的理想工具。此外,軟件可以根據檢測到的環境優化性能或資源使用情況,並且某些應用程序可能需要限制VM中的用法以防止未經授權的分發或測試。
已經有許多具有相同目標的項目,例如Invizzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzle,pafish和al-khaser。但是,上述項目之間的區別在於,除了對非窗口系統幾乎沒有支持之外,它們不提供與檢測機制交互的可編程接口。我希望核心檢測技術以跨平台的方式可以通過編程方式訪問,以便每個人都從中獲得一些有用的東西,而不是僅提供CLI工具。它還包含大量技術,因此基本上只是具有最大柔韌性的類固醇的VM檢測庫和工具。
有一些付費軟件可以保護其他軟件免受反向工程或軟件破解的許可,例如Thales的Sentinel RMS和VMProtect。儘管這些不僅是為VM檢測庫,但它們的功能以不同的方式受到限制。 Sentinel RMS的VM檢測沒有太多的VM品牌(更不用說定價僅針對公司而不是個人),並且VMProtect的檢測技術數量非常有限,其中一些人不需要大量努力就可以繞過幾個配置,從而繞過VM(檢測機制也沒有洩漏,因此已經洩漏了。說到這,Vmaware的唯一缺點是它是完全開源的,這使旁路人的工作與擁有封閉源相比更容易。但是,我認為通過以開放和互動的方式擁有許多VM檢測技術,這是一個值得折衷的,包括具有寶貴的社區反饋,以使圖書館更加有效和準確。
Hyper-V具有一個晦澀的功能,如果在主機系統中啟用了它,則CPU硬件值使整個系統看起來像在Hyper-V內部運行,這是不正確的。這使得確定庫收集的硬件值是真正的Hyper-V VM,或者僅僅是Hyper-V所剩下的偽像是在主機系統中啟用了Hyper-V所剩下的,這是一個挑戰。之所以出現問題,是因為庫可能會錯誤地得出您的主機系統在Hyper-V中運行,這是假陽性。這是Hyper-X機制的發揮作用,以區分這兩種。這是由安魂曲設計的

是的。有些技術在欺騙性上是可疑的,無論是故意的假陽性還是偽造的負面,圖書館對此無能為力。這是每個VM檢測項目都面臨的問題,無論是封閉還是開源,這就是為什麼圖書館試圖測試可能基於其運行的環境獲得最佳結果的每種技術的原因。請記住,一切在技術上都是可欺騙的。
出於明顯的原因,該項目沒有徵求惡意軟件的開發。即使您打算將其用於隱藏目的,無論如何,它很可能會被防病毒標記,一開始沒有任何混淆。好的運氣混淆10k+ C ++代碼lmao行。
我本來會嚴格地將其付諸實踐,因此專有軟件可以利用圖書館,但是使用的一些技術來自GPL 3.0項目,出於法律原因,我別無選擇,只能使用相同的許可證。這給了我一個想法,可以在沒有所有GPL代碼的情況下製作MIT版本,因此它也可以在不強迫您的代碼開源的情況下使用它。應當指出的是,麻省理工學院版本刪除了116個技術中的12種技術(從1.9版本開始),而技術數量越小,總體結果的準確性就越少。
如果您使用GCC或Clang編譯,請添加
-lm和-lstdc++標誌,或者使用G ++/Clang ++編譯器。如果您要從Linux上的全新VM環境中接收鏈接器錯誤,請使用sudo apt/dnf/yum update -y以安裝必要的C ++組件。
如果您有任何建議,想法或任何貢獻,請隨時提出!我很樂意在問題部分中討論。如果您想親自私下詢問某事,我的不和諧是kr.nl
而且,如果您發現這個項目有用,將不勝感激:)
我對通過對該項目的任何惡意使用造成的任何損害概不負責,也不承擔任何責任。
許可證:GPL-3.0/MIT