
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 ()يمكنك عرض المستندات الكاملة هنا. يتم توفير جميع التفاصيل مثل الوظائف والتقنيات والإعدادات والأمثلة. صدقني ، إنه ليس مخيفًا جدًا ؛)
يستخدم قائمة شاملة من المستوى المنخفض (وحدة المعالجة المركزية ، GPU ، HDD ، والبرامج الثابتة) وتقنيات مكافحة VM عالية المستوى والتي يتم حسابها في نظام تسجيل. يتم تقديم الدرجات (0-100) لكل تقنية بشكل تعسفي ، وسيتم إضافة كل تقنية اكتشفت درجة VM إلى نقطة تراكمية واحدة ، حيث سيقرر رقم نقطة العتبة ما إذا كان يعمل بالفعل في VM.
إنه مصمم للباحثين الأمنية ، ومهندسي VM ، ومطوري اللاعبين ، وأي شخص يحتاج إلى آلية عملية اكتشاف VM عملية وصخرية في مشروعهم. على سبيل المثال ، تكون المكتبة مناسبة إذا كنت تقوم بعمل VM وكنت تختبر فعالية إخفاء نفسها. إذا كنت مطورًا/مطورًا للبرامج الخاصة بالألعاب ، فإن المكتبة مفيدة لإحباطها ضد المهندسين العكسيين. إذا كنت محللًا للبرامج الضارة وترغب في التحقق من إمكانية إخفاء VM ، فستكون هذه هي الأداة المثالية لقياس مدى تواجد VM الخاص بك بشكل جيد ضد البرامج الضارة. بالإضافة إلى ذلك ، يمكن للبرامج تحسين الأداء أو استخدام الموارد بناءً على البيئة المكتشفة ، وقد ترغب بعض التطبيقات في تقييد الاستخدام في VMs لمنع التوزيع أو الاختبار غير المصرح به.
هناك بالفعل الكثير من المشاريع التي لها نفس الهدف مثل Invizzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzevizzzzzizzzzzzevice و al-khaser. لكن الفرق بين المشاريع المذكورة أعلاه هو أنها لا توفر واجهة قابلة للبرمجة للتفاعل مع آليات الكشف ، علاوة على الحصول على القليل من الدعم لأنظمة غير Windows. أردت أن تكون تقنيات الكشف الأساسية متاحة برمجياً بطريقة متعددة المنصات للجميع للحصول على شيء مفيد منه بدلاً من توفير أداة CLI. كما أنه يحتوي على كمية أكبر من التقنيات ، لذلك فهي مجرد مكتبة اكتشاف VM وأداة على المنشطات ذات المرونة القصوى.
هناك بعض البرامج المدفوعة لحماية ترخيص البرامج الأخرى ضد المهندسين العكسيين أو تكسير البرامج ، مثل Thales 'Sentinel RMS و VMProtect. على الرغم من أن هذه لا تهدف إلى أن تكون فقط مكتبات اكتشاف VM ، إلا أنها محدودة في قدراتها بطرق مختلفة. لا يحتوي اكتشاف VM 'Sentinel RMS على العديد من العلامات التجارية لـ VM (ناهيك عن أن التسعير المقصود فقط للشركات ، وليس الأفراد) ، ولديه VMprotect عدد محدود للغاية من تقنيات الكشف ، حيث لا يتطلب بعضها الكثير من الجهد لتجاوزه مع بعض التكوينات فقط إلى VM (لقد كانت آلية الكشف هي أيضًا تسرب ، لذلك لا يوجد أي جهد يمكن أن يكون مغلقًا الآن). عند الحديث عن ذلك ، فإن الجانب السلبي الوحيد لـ VMaware هو أنه مفتوح المصدر بالكامل ، مما يجعل مهمة التجوال أسهل مقارنة بوجود مصدر مغلق. ومع ذلك ، أود أن أزعم أن هذا بمثابة مفاضلة جديرة بوجود أكبر عدد ممكن من تقنيات الكشف عن VM بطريقة مفتوحة وتفاعلية ، بما في ذلك الحصول على تعليقات مجتمعية قيمة لجعل المكتبة أكثر فاعلية ودقة.
يحتوي Hyper-V على ميزة غامضة حيث يتم تمكينها في نظام المضيف ، فإن قيم أجهزة وحدة المعالجة المركزية تجعلها تبدو وكأنها تعمل النظام بأكمله داخل Hyper-V ، وهو أمر غير صحيح. هذا يجعل من التحدي تحديد ما إذا كانت قيمة الأجهزة التي تجمعها المكتبة هي إما Hyper-V VM حقيقية ، أو مجرد القطع الأثرية لما تركته Hyper-V كنتيجة لتمكينها في نظام المضيف. السبب في أن هذه المشكلة هي أن المكتبة قد تستنتج كاذبة أن نظام المضيف الخاص بك يعمل في Hyper-V ، وهو إيجابي خاطئ. هذا هو المكان الذي تلعب فيه آلية Hyper-X دورًا في التمييز بين هذين. تم تصميم هذا بواسطة Requiem

نعم. هناك بعض التقنيات التي يمكن أن تكون قابلة للتخريب ، ولا يوجد شيء يمكن للمكتبة فعله حيال ذلك سواء كان إيجابيًا كاذبًا متعمدًا أو حتى سلبيًا كاذبًا. هذه مشكلة يواجه كل مشروع لاكتشاف VM ما إذا كان مغلقًا أو مفتوحًا المصدر ، وهذا هو السبب في أن المكتبة تحاول اختبار كل تقنية ممكنة للحصول على أفضل نتيجة بناءً على البيئة التي تعمل تحت. تذكر أن كل شيء يمكن أن يكون قابلاً للتخفيف من الناحية الفنية.
هذا المشروع لا يطلب تطوير البرامج الضارة لأسباب واضحة. حتى إذا كنت تنوي استخدامه لأغراض الإخفاء ، فمن المحتمل أن يتم وضع علامة عليها من قبل مضادات الفيروسات على أي حال ولا يوجد شيء مبهج في البداية. حظ جيد سخيف التغلب على 10K+ خطوط C ++ رمز LMAO.
كنت قد نجحت في معهد ماساتشوستس للتكنولوجيا بشكل صارم حتى يتمكن البرامج الملكية من الاستفادة من المكتبة ، لكن بعض التقنيات المستخدمة هي من مشاريع GPL 3.0 ، وليس لدي خيار سوى استخدام الترخيص نفسه لأسباب قانونية. أعطاني هذا فكرة لصنع إصدار معهد ماساتشوستس للتكنولوجيا دون كل رمز GPL بحيث يمكن استخدامه أيضًا دون إجبار التعليمات البرمجية على أن تكون مفتوحة المصدر. تجدر الإشارة إلى أن إصدار MIT يزيل 12 تقنية من أصل 116 (اعتبارًا من 1.9 إصدار) ، وأقل عدد التقنيات ، كلما كانت النتيجة الإجمالية أقل دقة.
إذا كنت تقوم بتجميع مع GCC أو Clang ، فأضف علامات
-lmو-lstdc++، أو استخدم مجمعات G ++/Clang ++ بدلاً من ذلك. إذا كنت تتلقى أخطاء رابط من بيئة VM جديدة على Linux ، فحديث نظامك باستخدامsudo apt/dnf/yum update -yلتثبيت مكونات C ++ الضرورية.
إذا كان لديك أي اقتراحات أو أفكار أو أي نوع من المساهمة ، فلا تتردد في السؤال! سأكون أكثر من سعيد لمناقشة في قسم القضية. إذا كنت تريد أن تسأل شخصيا شيئًا ما على انفراد ، فإن خلافي هو kr.nl
وإذا وجدت هذا المشروع مفيدًا ، فسيتم تقدير النجم :)
أنا لست مسؤولاً ولا مسؤولاً عن أي ضرر تسببه من خلال أي استخدام ضار لهذا المشروع.
الترخيص: GPL-3.0/MIT