2012-10-02 15 views
10

से मैं Windows कर्नेल VirtualKD, WinDBG और एक ही वर्चुअल मशीन का उपयोग कर डिबग करने के लिए इस्तेमाल किया।डिबगिंग विंडोज कर्नेल लिनक्स

हाल ही में मुझे एक लिनक्स मशीन मिली है, और अब मुझे आश्चर्य है- विंडोज कर्नेल डीबग करने का सबसे आसान तरीका क्या है जब आपका होस्ट वर्चुअलकेडी/विनडबीजी * चलाने में असमर्थ है?

मुझे लगता समाधान दो वर्चुअल मशीनें की आवश्यकता होगी, लेकिन मैं नहीं बल्कि बल्कि एक उदाहरण एक और आभासी उदाहरण के अंदर रहने वाले की तुलना में दो उदाहरणों मेरी वास्तविक मशीन पर होस्ट है ...

वहाँ कि काम करने के लिए वैसे भी है?

अग्रिम धन्यवाद!

* शराब स्थिरता कारणों के लिए अंतिम उपाय है ...

उत्तर

16

हल हो गया! मूल रूप से, मैं एक यूनिक्स डोमेन सॉकेट (मेजबान पर) से अधिक दो (VirtualBox) VMs का उपयोग कर एक सीरियल कनेक्शन (शून्य-मॉडेम केबल) की नकल समाप्त हो गया। अधिक जानकारी के लिए, नीचे पढ़ें:

हार्डवेयर सेटअप *:

  • Debuggee:
    • सुनिश्चित मशीन बंद कर दिया है और सीरियल बंदरगाहों सेटिंग संपादित करें।
    • पोर्ट 1 सक्षम करें, और इस प्रकार मान निर्दिष्ट: पोर्ट संख्या: COM1, पोर्ट मोड: होस्ट पाइप, पाइप बनाएँ: अनियंत्रित (ग्राहक), पोर्ट/फ़ाइल पथ: /tmp/win_link
  • डीबगर: ऊपर (समान पथ का उपयोग करके) के रूप में
    • ही, हालांकि इस बार बनाएं पाइप होना चाहिए चेक किए गए (सर्वर)।

डिबगर सेटअप:

  • भागो WinDBG और प्रेस Ctrl + K कर्नेल डिबगिंग आह्वान करने के लिए।
  • में कॉम, दर्ज करें: baudrate: 115200, पोर्ट: COM1, पुनः निर्धारित करता है: 0 और सत्यापित करें कि पाइप और रिकनेक्ट अनियंत्रित (महत्वपूर्ण) कर रहे हैं।
  • आप निम्न उत्पादन के साथ प्रस्तुत किया जाएगा: Opened \\\\.\com1 Waiting to reconnect...

Debuggee स्थापना:

  • भागो /पोर्ट पर bootcfg/डिबग com1/बॉड 115200/आईडी 1। सत्यापित करने के लिए, bootcfg चलाएं। **
  • रीबूट करें।
  • बूटिंग चरण के दौरान काफी जल्दी, दूसरी मशीन पर WinDBG को डिबगी का पता लगाना चाहिए।

* वर्चुअलबॉक्स का मानना ​​है। वीएमवेयर/केवीएम उपयोगकर्ता शायद इसी तरह के चरणों के बाद एक ही परिणाम प्राप्त करने में सक्षम होंगे। इसके अलावा, अधिक जानकारी के लिए VirtualBox docs देखें।

** मान लीजिए अतिथि विंडोज एक्सपी हैं। बाद के संस्करणों में bcdedit शामिल है, जिसका उपयोग here के रूप में किया जा सकता है।

+0

आपका विन्यास सही लेकिन क्या विन्यास मैं उपयोग कर रहा हूँ, मैं अपने दोनों खिड़कियों VMs पर सीरियल पोर्ट नहीं देख सकते हैं की परवाह किए बिना लगता है।क्या आपके पास कभी ऐसा कोई मुद्दा है? –

1

बहुत उपयोगी लेकिन Windows XP मशीन पर लागू होती। यदि आपको लिनक्स होस्ट पर 2 विंडोज 7-आधारित आभासी मशीनों को कॉन्फ़िगर करने की आवश्यकता है, तो आप निम्न लिंक का संदर्भ ले सकते हैं: http://www.aldeid.com/wiki/Category:Digital-Forensics/Computer-Forensics/Debugger/Kernel

0

आजकल एक और विकल्प स्थानीय कर्नेल डिबगिंग को सक्षम करना है। यह limitations के साथ आता है, हालांकि यह आपको एक VM का उपयोग करते समय कर्नेल डेटा तक पहुंचने में सक्षम बनाता है।

यह दृष्टिकोण केवल विंडोज 8.0 और विंडोज सर्वर 2012 और बाद में काम करता है। प्रशासक के रूप में

  1. एक कमांड प्रॉम्प्ट विंडो खोलें:

    इन चरणों का पालन करें।

  2. bcdedit /debug on
  3. दर्ज कंप्यूटर पहले से ही एक डिबग परिवहन का लक्ष्य के रूप में विन्यस्त नहीं है, तो दर्ज bcdedit /dbgsettings local
  4. रीबूट कंप्यूटर।

एक बार सिस्टम रिबूट है, तो आप Administrator, ctrl+k प्रेस के रूप में WinDBG निष्पादित या File -> Attach to kernel -> Local और ठीक दबाएँ करने के लिए जा सकते हैं। (पूर्वावलोकन)

enter image description here

Windows 10 के तहत और नए WinDBG संस्करण के साथ परीक्षण किया गया:

Attach to Kernel Option

उस बिंदु पर, आप कर्नेल केवल आदेश और पहुंच गिरी संरचनाओं को निष्पादित करने में सक्षम हो जाएगा ।

संदर्भ: Setting Up Local Kernel Debugging of a Single Computer Manually

संबंधित मुद्दे