इन दिनों अधिकांश माइक्रो नियंत्रकों में एम्बेडेड फर्मवेयर कोड की सुरक्षा के लिए भाग या निर्माता विशिष्ट तरीके हैं। यह आमतौर पर सर्किट को लॉक करके किया जाता है जो आम तौर पर कोड मेमोरी को बाहर पढ़ने की अनुमति देता है। (आपको डेटा शीट में या लागू एप्लिकेशन नोटों में निर्माताओं की वेब साइट पर आंशिक विशिष्ट विवरण देखना होगा)।
एक बार लॉक होने के बाद सामान्य तकनीकों का उपयोग करके कोड मेमोरी को पढ़ना संभव नहीं है। यह आपके कोडित एप्लिकेशन के लिए मशीन कोड को देखने से अधिकांश हैकर्स को रखने के लिए उचित स्तर की सुरक्षा प्रदान करता है।
कई MCU डिवाइस इन दिनों प्रोग्राम कोड को स्टोर करने के लिए ऑन-बोर्ड फ्लैश मेमोरी है। FLASH में संग्रहीत पहले से संग्रहीत और संरक्षित प्रोग्राम को आमतौर पर नए कोड से बदला जा सकता है, लेकिन सुरक्षा तंत्र को अनलॉक करने के लिए एक पूर्ण चिप FLASH मिटा देता है। एक बार मिटाने के बाद यह उस तरह काम करेगा जैसे मूल सुरक्षा लॉक से पहले किया था। यदि कोई नया प्रोग्राम लोड किया गया है तो आम तौर पर नए लोड किए गए मशीन कोड की सुरक्षा के लिए इस हिस्से को फिर से लॉक करना संभव है।
माइक्रोकंट्रोलर्स में कोड सुरक्षा की कोई भी चर्चा इस बात के बिना पूरी नहीं होगी कि आमतौर पर इस बात की कोई गारंटी नहीं है कि पार्ट निर्माता द्वारा दी गई कोई भी सुरक्षा योजना मूर्ख प्रमाण है। निर्माता यहां तक बताएंगे कि सुरक्षा प्रणालियां 100% मूर्ख प्रमाण नहीं हैं। इसका एक कारण यह है कि एक पूरी ब्लैक मार्केट इंडस्ट्री चल रही है, जहां एक शुल्क के लिए, मेहनती हैकर किसी भी व्यक्ति के लिए संरक्षित हिस्से से कोड पढ़ेंगे जो भुगतान करना चाहते हैं। उन्होंने विभिन्न योजनाओं को तैयार किया है जो कोड को संरक्षित माइक्रो नियंत्रक पर रोम या फ्लैश से बाहर पढ़ने की अनुमति देते हैं। इन योजनाओं में से कुछ अविश्वसनीय रूप से चतुर हैं, लेकिन दूसरों की तुलना में कुछ भाग परिवारों पर बेहतर सफलता के लिए काम करती हैं। तो इस तथ्य से अवगत रहें फिर आप अपने कार्यक्रम को चुभने वाली आँखों से बचाने की कोशिश करें।
एक बार जब किसी के पास मशीन कोड की द्विआधारी छवि पर हाथ होता है जिसे एक माइक्रोकंट्रोलर से बाहर पढ़ा गया है, चाहे वह एक संरक्षित माइक्रोकंट्रोलर था या नहीं, वे मशीन कोड को एक डिस्सेम्बलर नामक उपकरण के माध्यम से संसाधित कर सकते हैं। यह बाइनरी डेटा को असेंबली लैंग्वेज कोड में बदल देगा, जिसका अध्ययन करके यह जानने की कोशिश की जा सकती है कि आपके प्रोग्राम के एल्गोरिदम कैसे काम करते हैं। मशीन कोड का सटीक डिस्प्रेशन करना एक श्रमसाध्य काम है जो भारी मात्रा में काम कर सकता है। अंत में प्रक्रिया असेंबलर कोड की ओर ले जा सकती है जैसे मैंने बताया। यदि आपका प्रोग्राम कुछ उच्च स्तरीय भाषा में लिखा गया था जैसे कि C, C ++ या बेसिक असेंबली कोड केवल आपके प्रोग्राम के संकलित और लिंक किए गए परिणाम का प्रतिनिधित्व करेगा। आमतौर पर इंजीनियर चोरी कोड को उच्च स्तरीय भाषा के स्तर पर वापस करना संभव नहीं है।
इसका मतलब यह है कि वास्तव में एक उच्च स्तरीय भाषा में अपने एम्बेडेड एप्लिकेशन फर्मवेयर को लिखने का एक लाभ है। यह एक और परत प्रदान करता है जो आपके प्रोग्राम को पूरी तरह से रिवर्स इंजीनियर बनाने के लिए कठिन बनाता है। अधिक से अधिक लाभ एम्बेडेड एप्लिकेशन को संकलित करने के लिए कंपाइलरों के अनुकूलन में कला के उच्चतम राज्य का उपयोग करके किया जाना है, क्योंकि उच्चतम प्रदर्शन ऑप्टिमाइज़र वास्तव में दर्जनों कॉल से भरे एक विशाल स्पेगेटी कटोरे में कार्यक्रम को छोटे उप-चरणों में बदल सकते हैं जो बहुत कठिन हैं। एक डिस्सेम्बलर में समझने के लिए।
अधिकांश अनुभवी एम्बेडेड डेवलपर्स आपको अपने आवेदन में MCU पर दी जाने वाली किसी भी सुरक्षा योजना का उपयोग करने और आगे बढ़ने के लिए कहेंगे .... लेकिन यह आपके उत्पाद के लिए सड़क के अंत तक निर्भर करने के लिए नहीं। वे आपको बताएंगे कि प्रतियोगिता से आगे रहने का सबसे अच्छा तरीका है कि आप अपने उत्पाद को लगातार उन्नत करें ताकि पुराने संस्करण पुराने हो जाएं और उस समय तक निर्बाध रहें जब तक कि हैकर्स आपके कोड का क्लोन बना लें। कोड बदलें, नई सुविधाएँ जोड़ें, समय-समय पर अपने सभी I / Os को स्वैप करने के लिए अपने पीसी बोर्डों को स्पिन करें और किसी भी अन्य चीज़ों के बारे में जो आप सोच सकते हैं। इस तरह आप हर बार दौड़ जीत सकते हैं।