سؤال

هناك الرسمية طريقة للحصول على تطبيق لتحديد ما إذا كان يعمل في برنامج VMware أو Virtual PC (أو ما يسميه Microsoft الآن)؟ عادة ما يكون الرمز الذي رأيته اختراقا استفاد من تأثير الجانب السلوكي الغريب في إصدار محدد من VMWare أو Virtual PC.

رمز دلفي مثالي، ولكن إذا كنت تستطيع الارتباط إلى شرح رسمي، فأنا متأكد من أنني أستطيع تحويله.

هل كانت مفيدة؟

المحلول

كتبت سلسلة من المقالات العام الماضي على هذا، مع شفرة المصدر. VMware والكشف عن النبيذ هنا. وبعد Virtual PC هو هنا. وبعد جميع هذه الثلاثة لديهم اكتشاف رضع من الحديد الجميل لأن هناك ردود وصلات موثقة إلى HyperVisor (في حالة النبيذ، امتدادا إلى DLL قياسي). أنا وضعت كاشف Virtualbox غير مهتم (لا يكون لديك مثبتة لاختبار مع) في قسم التعليق. قد تكون الأظافر غير قابلة للكشف عن رد اتصال أيضا ولكن ليس لدي تثبيتها. رابط الوثائق (وهو ضعيف لأنه من باحث أمني يركز على الاستغلال) ولكن يقع هنا إذا كان لديك تثبيت وتهتم. هناك أيضا PPT هنا تحتوي أن بعض المعلومات حول الكشف عن صندوق الرمل والكبار و شن. ليس الكثير من التعليمات البرمجية فيه ولكن قد يوفر لك نقطة انطلاق إذا كان عليك اكتشاف أولئك.

نصائح أخرى

مشروع الرمز يظهر وسيلة ل كشف إذا كان برنامجك يعمل داخل الجهاز الظاهري هذا يذهب إلى الكثير من التفاصيل حول كيفية تحقيقه لإعطاء فهم جيد

أعتقد أن أفضل نهج لهذا هو التحقق من ملفات تعريف الأجهزة. عادة ما يستخدم الأجهزة الافتراضية جزءا من اسم الشركات. إذا قمت بالتحقق من وصف اللوحة الأم أثناء وجودك في Virtual PC، فستلاحظ أنه مصنوع من "Microsoft Corporation". وبالمثل في VMware، سيتم بادئة محول إيثرنت الخاص بك مع VMNet.

هذا الموضوع في منتديات SYSINTERNALS لديها إجابات (في دلفي، بالطبع)، بما في ذلك وظيفة ISVM واحدة. لقد تم اختبارها على XP و WIN2003 المستضافة على كل من XP و Vista في VMWare مع نتائج جيدة.

هناك طريقة WMI المنشورة هنا:http://blogs.msdn.com/virtual_pc_guy/archive/2005/10/27/484479.aspx.

لقد قمت بفحص مضاعفة في صورة XP قيد التشغيل على الكمبيوتر الشخصي الظاهري، والقيمة التي يختبرها لا تزال هي نفسها. لن أضمن ما عودة VMS الأخرى هنا، على الرغم من ...

لقد حصلت في الواقع على برنامج Delphi كتبت قبل عامين للحصول على قائمة وتغيير الطابعة الافتراضية باستخدام WMI، دون الحاجة إلى مكونات الطرف الثالث أو أي شيء من هذا القبيل. في حال لم تكن معتادا على العمل مع WMI من دلفي، يمكنني إرسال نسخة إليك، لذلك لديك شيء يجب عمله (ليس بالضرورة Unicode-compatible، ولكن لا ينبغي أن يكون صعبا جدا بالنسبة لي ترقية ذلك إذا لزم الأمر).

لقد استخدمت حبة دواء حمراء الطريقة (ترجمت إلى دلفي، ولكن الكود ليس من الصعب فهمه) الذي عمل جيدا إلى حد ما. كما تضمنت بعض الشيكات الإضافية باستخدام مكالمات WMI للحصول على أشياء مثل اسم بائع محول الشبكة وحقوق التأليف والنشر، ولكن كان ذلك للكشف عن إصدارات محددة من الكمبيوتر الشخصي Virtual PC.

فهمي طريقة الإعادة الإصلاحية هو أنه يجب أن يعمل والكشف عن جميع الأجهزة الافتراضية القائمة على طبيعة كيفية عملها. هناك إمكانية أن يتم إنشاء الإيجابيات الخاطئة أيضا حيث يمكن تكوين Windows الجديد داخل Windows من Windows 7 لتشغيل البرامج المحددة في نسخة من نظام التشغيل Windows XP بسلاسة داخل Windows 7.

لقد حظيت حظا سعيدا بالنظر فقط إلى عنوان MAC حيث يتم إعطاء جميع الشركات المصنعة كتلة وأجزاء الثلاثة الأولى فريدة لهم.

//look at the MAC address and determine if it's a Virtual Machine
$temp = preg_split("/\s+/",exec("/sbin/ifconfig -a eth0 2>&1 | /bin/grep HWaddr"), -1, PREG_SPLIT_NO_EMPTY);
//Virtual Box MACs all start with '08:00:27:xx:xx:xx'
if (strpos($temp[4], '08:00:27') !== false) $_SESSION['DEVELOPMENT'] = true;  

لتحديد الجهاز مادي أو VM

dmidecode | egrep -i 'manufacturer|product'

إذا لم يتم العثور على أمر DMIDECODE تثبيت RPM المعني.

يتم اختبار هذا تحت exsi وآلات VMware و Hyperv.

إذا كنت ترغب في اكتشاف وجود أي نوع من الافتراضية، فمن الأفضل تحليل خصائص الأداء. خذ شيئا أبطأا بشكل كبير في المحاكاة الافتراضية (مثل عبء العمل الثقيل MMU مثل قنبلة شوكة) ووقت ذلك ضد تطبيق مساحي CPU العادي. من النسبة، يمكنك أن تقول بسهولة.

أسهل من حيث الجهود إذا كنت تهتم فقط ببعض VMMS هي البحث عن أجهزة PCI PCI الخاصة بها:

00: 07.3 Bridge: Intel Corporation 82371ab / EB / MB Piix4 ACPI (REV 08) النظام الفرعي: VMware Inc Chipset آلة الظاهري

15AD: 1976.

قيمة البائع هي "15AD"

هناك أيضا منافذ خلفية محددة تعمل عبر مختلف VMMS في إصدارات مختلفة. خدعة SIDT جيدة جدا، ولكن ماذا لو لم يكن VMM في القائمة التي يقوم بها رمزه؟

dmidecode -s system-product-name

تم اختباره على VirtualBox، النتيجة:

Virtualbox
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top