
VMAWARE (VM+ AWARE) เป็นไลบรารี C ++ Cross-Platform สำหรับการตรวจจับเครื่องเสมือน
ห้องสมุดคือ:
# 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 ในส่วนรุ่นล่าสุดไปยังโครงการของคุณ ไบนารีตั้งอยู่ที่นั่น ไม่จำเป็นต้องมีการเชื่อมโยงวัตถุที่ใช้ร่วมกันหรือใช้ร่วมกัน แต่เป็นเรื่องง่าย
อย่างไรก็ตามหากคุณต้องการโครงการเต็มรูปแบบ (ส่วนหัวที่เข้าถึงได้ทั่วโลกด้วย <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 เพื่อป้องกันการกระจายหรือการทดสอบที่ไม่ได้รับอนุญาต
มีโครงการมากมายที่มีเป้าหมายเดียวกันเช่น Invizzzible, Pafish และ Al-Khaser แต่ความแตกต่างระหว่างโครงการดังกล่าวคือพวกเขาไม่ได้จัดเตรียมอินเทอร์เฟซที่ตั้งโปรแกรมไว้เพื่อโต้ตอบกับกลไกการตรวจจับโดยไม่สนับสนุนระบบที่ไม่ใช่ windows เพียงเล็กน้อย ฉันต้องการให้เทคนิคการตรวจจับหลักสามารถเข้าถึงได้โดยทางโปรแกรมในแบบข้ามแพลตฟอร์มเพื่อให้ทุกคนได้รับสิ่งที่เป็นประโยชน์จากมันแทนที่จะจัดหาเครื่องมือ CLI นอกจากนี้ยังมีเทคนิคในปริมาณที่มากขึ้นดังนั้นโดยทั่วไปแล้วมันเป็นเพียงไลบรารีการตรวจจับ VM และเครื่องมือบนสเตียรอยด์ที่มีความยืดหยุ่นสูงสุด
มีซอฟต์แวร์ที่ต้องชำระเงินสองสามตัวเพื่อป้องกันการออกใบอนุญาตของซอฟต์แวร์อื่นกับวิศวกรย้อนกลับหรือการแคร็กซอฟต์แวร์เช่น Sentinel RMS ของ Thales และ VMProtect แม้ว่าสิ่งเหล่านี้ไม่ได้หมายถึงเฉพาะห้องสมุดการตรวจจับ VM แต่ก็มีข้อ จำกัด ในความสามารถของพวกเขาในรูปแบบที่แตกต่างกัน การตรวจจับ VM ของ Sentinel RMS ไม่ได้มีแบรนด์ VM จำนวนมาก (ไม่ต้องพูดถึงการกำหนดราคานั้นมีความหมายเฉพาะสำหรับ บริษัท ไม่ใช่บุคคล) และ VMProtect มีเทคนิคการตรวจจับจำนวน จำกัด มากซึ่งบางคนไม่ต้องการความพยายามอย่างมาก การพูดถึงข้อเสียเพียงอย่างเดียวของ Vmaware คือมันเป็นโอเพนซอร์สอย่างเต็มที่ซึ่งทำให้งานบายพาสง่ายขึ้นเมื่อเทียบกับการปิดแหล่งที่มา อย่างไรก็ตามฉันยืนยันว่านั่นเป็นการแลกเปลี่ยนที่มีค่าโดยมีเทคนิคการตรวจจับ VM จำนวนมากในวิธีที่เปิดกว้างและโต้ตอบรวมถึงการตอบรับชุมชนที่มีคุณค่าเพื่อให้ห้องสมุดมีประสิทธิภาพและแม่นยำยิ่งขึ้น
Hyper-V มีคุณสมบัติที่คลุมเครือซึ่งหากเปิดใช้งานในระบบโฮสต์ค่าฮาร์ดแวร์ CPU ทำให้ดูเหมือนว่าระบบทั้งหมดทำงานภายใน Hyper-V ซึ่งไม่เป็นความจริง สิ่งนี้ทำให้มันเป็นความท้าทายในการพิจารณาว่าฮาร์ดแวร์ค่านิยมที่ห้องสมุดกำลังรวบรวมนั้นเป็น Hyper-V VM จริงหรือเพียงแค่สิ่งประดิษฐ์ของสิ่งที่ Hyper-V ทิ้งไว้เนื่องจากการเปิดใช้งานในระบบโฮสต์ เหตุผลที่ปัญหานี้เป็นเพราะห้องสมุดอาจสรุปได้ว่าระบบโฮสต์ของคุณทำงานใน Hyper-V ซึ่งเป็นบวกที่ผิดพลาด นี่คือที่กลไก Hyper-X เข้ามามีบทบาทเพื่อแยกความแตกต่างระหว่างสองสิ่งนี้ สิ่งนี้ได้รับการออกแบบโดยบังสุกุล

ใช่. มีเทคนิคบางอย่างที่มีการปลอมแปลงเล็กน้อยและไม่มีสิ่งใดที่ห้องสมุดสามารถทำได้เกี่ยวกับมันไม่ว่าจะเป็นบวกเท็จโดยเจตนาหรือแม้กระทั่งลบเท็จ นี่เป็นปัญหาที่โครงการตรวจจับ VM ทุกโครงการกำลังเผชิญไม่ว่าจะปิดหรือโอเพ่นซอร์สซึ่งเป็นสาเหตุที่ห้องสมุดพยายามทดสอบทุกเทคนิคที่เป็นไปได้เพื่อให้ได้ผลลัพธ์ที่ดีที่สุดตามสภาพแวดล้อมที่ทำงานอยู่ภายใต้ โปรดจำไว้ว่าทุกอย่างสามารถปลอมแปลงได้ทางเทคนิค
โครงการนี้ไม่ได้ชักชวนการพัฒนามัลแวร์ด้วยเหตุผลที่ชัดเจน แม้ว่าคุณจะตั้งใจจะใช้เพื่อจุดประสงค์ในการปกปิด โชคดีที่โชคดีที่น่าเบื่อหน่าย 10K+ บรรทัดของรหัส C ++ LMAO
ฉันจะทำให้มันเป็น MIT อย่างเคร่งครัดดังนั้นซอฟต์แวร์ที่เป็นกรรมสิทธิ์สามารถใช้ประโยชน์จากห้องสมุดได้ แต่เทคนิคบางอย่างที่ใช้มาจากโครงการ GPL 3.0 และฉันไม่มีทางเลือกนอกจากใช้ใบอนุญาตเดียวกันด้วยเหตุผลทางกฎหมาย สิ่งนี้ทำให้ฉันมีความคิดที่จะสร้างเวอร์ชัน MIT โดยไม่ต้องใช้รหัส GPL ทั้งหมดดังนั้นจึงสามารถใช้งานได้โดยไม่ต้องบังคับให้รหัสของคุณเป็นโอเพนซอร์ซ ควรสังเกตว่ารุ่น MIT ลบ 12 เทคนิคออกจาก 116 (ณ 1.9 เวอร์ชัน) และจำนวนเทคนิคที่น้อยลงเท่าไหร่ผลลัพธ์โดยรวมก็จะน้อยลง
หากคุณกำลังรวบรวมด้วย GCC หรือ Clang ให้เพิ่ม Flag
-lmและ-lstdc++หรือใช้คอมไพเลอร์ G ++/Clang ++ แทน หากคุณได้รับข้อผิดพลาดของ Linker จากสภาพแวดล้อม VM ใหม่ล่าสุดบน Linux ให้อัปเดตระบบของคุณด้วยsudo apt/dnf/yum update -yเพื่อติดตั้งส่วนประกอบ C ++ ที่จำเป็น
หากคุณมีข้อเสนอแนะความคิดหรือการสนับสนุนใด ๆ อย่าลังเลที่จะถาม! ฉันจะมีความสุขมากกว่าที่จะพูดคุยในส่วนปัญหา หากคุณต้องการถามอะไรบางอย่างเป็นการส่วนตัวความไม่ลงรอยกันของฉันคือ kr.nl
และถ้าคุณพบว่าโครงการนี้มีประโยชน์ดาวจะได้รับการชื่นชม :)
ฉันไม่รับผิดชอบหรือไม่รับผิดชอบต่อความเสียหายใด ๆ ที่คุณเกิดขึ้นจากการใช้งานที่เป็นอันตรายของโครงการนี้
ใบอนุญาต: GPL-3.0/MIT