2008-09-02 5 views
7

के एमबीआर को संशोधित करने के लिए मुझे विंडोज़ के एमबीआर को संशोधित करने की आवश्यकता है, और मैं वास्तव में विंडोज से ऐसा करना चाहता हूं।विंडोज

यहां मेरे प्रश्न हैं। मुझे पता है कि मैं CreateFile को कॉल के साथ एक भौतिक डिवाइस पर एक हैंडल प्राप्त कर सकता हूं। क्या एमबीआर हमेशा \\। \ PHYSICALDRIVE0 पर होगा? साथ ही, मैं अभी भी डिस्क से सीधे पढ़ने के लिए विंडोज एपीआई सीख रहा हूं। क्या readabsolutesectors और writeabsolutesectdors दो कार्यों को मैं डिस्क क्षेत्रों में पढ़ने/लिखने के लिए उपयोग करने की आवश्यकता होगी जिसमें एमबीआर है?

जो मैंने अपने बारे में सीखा है उससे संपादित करें। एमबीआर हमेशा \\। \ PHYSICALDRIVE0 पर नहीं होगा। इसके अलावा, आप एमबीआर युक्त ड्राइव के डिवाइस नाम के साथ CreateFile को कॉल करके बूटसेक्टर (कम से कम XP पर व्यवस्थापक के रूप में) लिख सकते हैं। साथ ही, आप WriteFile को कॉल करके और CreateFile को कॉल करके बनाए गए डिवाइस के हैंडल को पास करके इस ड्राइव पर लिख सकते हैं।

जोएल Coehoorn को संबोधित करने के लिए संपादित करें। मुझे एमबीआर संपादित करने की आवश्यकता है क्योंकि मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जिसे BIOS में POST के बाद हार्डवेयर रजिस्टरों को संशोधित करने की आवश्यकता है, लेकिन इससे पहले कि विंडोज बूट हो जाए। हमारी योजना विंडोज बूट होने से पहले हमारे कोड को निष्पादित करने के लिए बूटलोडर को संशोधित करके इन परिवर्तनों को बनाना है।

सीडी-एमएन के लिए संपादित करें। जानकारी के लिए धन्यवाद। आपके उत्तर में कुछ भी नहीं है, हालांकि, मुझे नहीं पता था और आपका जवाब मेरे प्रश्न को संबोधित नहीं करता है। विशेष रूप से रजिस्ट्री पूरी तरह से नहीं करेगी जो हमें कई कारणों से चाहिए। इसका कारण यह है कि विंडोज़ कई सॉफ्टवेयर परतों के बीच उच्चतम परत है जो हमारे उत्पाद के साथ चल रही है। इन परिवर्तनों को निम्न स्तरों से पहले भी होने की आवश्यकता है, और इसलिए रजिस्ट्री काम नहीं करेगी।

पीएस सीडी-एमएन के लिए। जैसा कि मैं इसे समझता हूं, आपके द्वारा दी गई जानकारी बिल्कुल सही नहीं है। Vista के लिए, मुझे लगता है कि यदि आप बूट सेक्टर के लिए लिखे गए हैं तो आप वॉल्यूम पर लिख सकते हैं। http://support.microsoft.com/kb/942448

उत्तर

4

बूटलोडर को संशोधित करना बुरा, बुरा विचार है। यहाँ संभव पकड़ लिया है की बस कुछ कर रहे हैं:

  • यह संभावित रूप से पूर्ण डिस्क एन्क्रिप्शन उत्पादों (Truecrypt, पीजीपी, विस्टा के BitLocker, आदि) मार डालेगा
  • यह संभावित रूप से ए वी उत्पादों (डरा उपयोगकर्ताओं)
  • अप ट्रिप जाएगा
  • यह संभावित रूप से जटिल बूटिंग परिदृश्यों (श्रृंखलित बूट लोडर, आदि) मार डालेगा
  • यह जब TPM मॉड्यूल का उपयोग कर विश्वास की श्रृंखला बंद मार देगा (क्योंकि यह यह निष्पादित करने से पहले बदलाव के लिए एमबीआर की जाँच करता है)
  • प्रत्यक्ष डिस्क पहुँच है Vista से शुरू होने की अनुमति नहीं है (केवल ड्राइवरों का उपयोग करके)

विकल्प (जैसे बूट बूट पर लोड होने के लिए सेट किए गए ड्राइवर के माध्यम से विंडोज बूटअप के दौरान हार्डवेयर रजिस्टर को संशोधित करना या विंडोज बूट करने के बाद) को वास्तव में माना जाना चाहिए। संशोधन यानी एक बंदरगाह के लिए लेखन, के रूप में सरल है:

OUT AX, BL 

तो ड्राइवरों विंडो के सभी संस्करणों जो यह कर सकते हैं के लिए मौजूद है (पढ़ने/एक निश्चित बंदरगाह से/एक मूल्य के लेखन) कहा जा सकता है उपयोगकर्ता मोड से।

+0

प्रत्येक बूटसेक्टर कोड प्रोग्रामर को संभावित मुद्दों की सूची जाननी चाहिए। धन्यवाद! –

+1

और क्या आप कहेंगे कि ये गॉथ 9x के 'एफडीस्क/एमबीआर' जीतने के लिए लागू होते हैं, और एक्सपी के 'फिक्समब्र' में बहुत कम डिस्क एन्क्रिप्शन होता है .. एमबीआर दूषित होने पर एवी को ट्रिप करना भी चिंता का विषय नहीं है। अधिकांश लोगों में जटिल बूट परिदृश्य नहीं होते हैं और यदि उन्हें यह सुनिश्चित होता है कि उन्हें कभी भी एमबीआर को ठीक करने की आवश्यकता है तो fdisk/mbr या fixmbr उनके पास अधिक विनाशकारी नहीं होगा .. – barlop

5

एक बार ओएस शुरू होने के बाद एमबीआर आमतौर पर वायरस के कारणों से संरक्षित होता है - यह किताबों में सबसे पुरानी वायरस चाल है - फ्लॉपी से फ्लॉपी तक वायरस पास करने के लिए वापस चला जाता है।

भले ही यह प्रतिबंधित नहीं था, आपको निम्न स्तर कोड लिखना होगा - यह फ़ाइल सिस्टम का हिस्सा नहीं है, लेकिन हार्ड ड्राइव पर किसी विशिष्ट स्थान पर मौजूद है।

इसके कारण, आप बहुत कम स्तर लिखने के लिए प्रतिबंधित हैं (अधिकांश कार्यक्रम इसे असेंबली में कार्यान्वित करते हैं) या सी कोड लक्ष्यीकरण 16 बिट डॉस।

इनमें से अधिकतर प्रोग्राम सीधे डिस्क के क्षेत्रों तक पहुंचने के लिए BIOS interface (13h, मुझे विश्वास है) का उपयोग करते हैं। आप कुछ इनलाइन असेंबली, या कंपाइलर इंटरफेस प्रदान करते हुए सी में इन तक पहुंच सकते हैं। ओएस के सहयोग के बिना आपको आमतौर पर BIOS तक पहुंच नहीं मिलेगी, हालांकि, आपका प्रोग्राम, फिर से, डॉस तक ही सीमित होगा। यदि आप इन तक पहुंच सकते हैं तो आप लगभग घर मुक्त हैं - बीआईओएस के बारे में अच्छी बात यह है कि आपको इस बारे में चिंता करने की ज़रूरत नहीं है कि सिस्टम में किस प्रकार का एचडी है - यहां तक ​​कि RAID कार्ड अक्सर स्वयं को BIOS रूटीन में डाल देते हैं ताकि उन्हें एक्सेस किया जा सके यह जानने के बिना कि एटीए या सैटा नियंत्रक स्मृति में कहां है, और उस निम्न स्तर पर कमांड निष्पादित करता है।

यदि आपको बिल्कुल ओएस के भीतर इसे एक्सेस करना होगा, तो आपको बीआईओएस या मेमोरी स्पेस तक पहुंचने के लिए डिवाइस ड्राइवर को लिखना होगा जहां एचडी नियंत्रक मौजूद हैं। मैं इसकी अनुशंसा नहीं करता, हालांकि, इस तरह से निपटने के लिए बहुत मुश्किल है - आधुनिक कंप्यूटरों ने विभिन्न आईआरक्यू के साथ स्मृति में विभिन्न स्थानों में एचडी नियंत्रकों को रखा है, और प्रत्येक चिपसेट थोड़ा और गूढ़ हो गया है क्योंकि वे न्यूनतम इंटरफ़ेस प्रदान कर सकते हैं बूटअप के लिए बायोस, और उसके बाद विंडोज के लिए एक विशिष्ट ड्राइवर। वे अन्य सभी इंटरफ़ेस niceties को छोड़ देते हैं जिन्हें अन्य नियंत्रकों के साथ संगत माना जाएगा क्योंकि यह संगत होने के लिए अधिक महंगा है।

आप पा सकते हैं कि विंडोज़ के अंदर ड्राइवर स्तर पर आपके पास ड्राइव सेक्टर सीधे (या सीधे छद्म) तक पहुंचने के तरीके होंगे, लेकिन फिर से, वे उपरोक्त वायरस के मुद्दों के कारण बहुत अच्छी तरह से संरक्षित हैं।

शुभकामनाएं!

2

शायद एक पीएक्सई बूट परिदृश्य आपकी मदद कर सकता है? बस अपनी तैयार की गई PXE छवि पर बूट करें जो हार्डवेयर रजिस्टरों को संशोधित करने के लिए संशोधित करता है, और फिर नियंत्रण को मास्टर बूट रिकॉर्ड या सक्रिय विभाजन के बूट रिकॉर्ड में वापस कर दें।

इस तरह आपको बूट रिकॉर्ड को संशोधित करने की आवश्यकता नहीं है।