এম্বেড থাকা ফার্মওয়্যার কোডটি আজকাল বেশিরভাগ মাইক্রো কন্ট্রোলারের অংশ বা প্রস্তুতকারকের নির্দিষ্ট পদ্ধতি রয়েছে। এটি সাধারণত এমন সার্কিটগুলি লক করে করা হয় যা সাধারণত কোড মেমোরিটি পড়তে দেয়। (আপনাকে ডেটা শিটে বা প্রযোজ্য অ্যাপ্লিকেশন নোটগুলিতে নির্মাতাদের ওয়েব সাইটে কিছু নির্দিষ্ট বিবরণ সন্ধান করতে হবে)।
একবার লক হয়ে গেলে সাধারণ কৌশলগুলি ব্যবহার করে কোড মেমোরিটি পড়া সম্ভব হয় না। এটি আপনার এম্বেড থাকা অ্যাপ্লিকেশনের জন্য মেশিন কোডটি দেখা থেকে বেশিরভাগ হ্যাকারদের রাখার জন্য যুক্তিসঙ্গত সুরক্ষা সরবরাহ করে।
আজকাল অনেক এমসিইউ ডিভাইসগুলিতে প্রোগ্রাম কোডটি বাড়াতে অন-বোর্ডে ফ্ল্যাশ মেমরি রয়েছে। ফ্ল্যাশ-এ সঞ্চিত পূর্বে সঞ্চিত এবং সুরক্ষিত প্রোগ্রামটি সাধারণত নতুন কোডের সাথে প্রতিস্থাপন করা যেতে পারে তবে সুরক্ষা ব্যবস্থা আনলক করতে সম্পূর্ণ চিপ ফ্ল্যাশ মুছা অপারেশন লাগে। মুছে ফেলা অংশটি আসল সুরক্ষা লকের আগে যেমন করত তেমন কাজ করবে। যদি কোনও নতুন প্রোগ্রাম লোড করা থাকে তবে নতুনভাবে লোড হওয়া মেশিন কোডটি সুরক্ষিত রাখতে সাধারণত অংশটি পুনরায় লক করা সম্ভব।
মাইক্রোকন্ট্রোলারগুলিতে কোড সুরক্ষার যে কোনও আলোচনাই এই উল্লেখ ব্যতীত সম্পূর্ণ হবে না যে অংশ নির্মাতার দ্বারা প্রদত্ত যে কোনও সুরক্ষা স্কিম বোকা প্রমাণ বলে সাধারণত কোনও গ্যারান্টি নেই। উত্পাদকরা এমনকি এটিও বলে রাখবেন যে সুরক্ষা সিস্টেমগুলি 100% বোকা প্রমাণ নয়। এর অন্যতম কারণ হ'ল পুরো ব্ল্যাক মার্কেট শিল্প চলছে যেখানে একটি পারিশ্রমিকের জন্য, অধ্যবসায়ী হ্যাকাররা যে কোনও ব্যক্তিকে যে অর্থ প্রদান করতে চায় তার জন্য সুরক্ষিত অংশ থেকে কোড পড়বে। তারা বিভিন্ন স্কিম তৈরি করেছে যা সুরক্ষিত মাইক্রো কন্ট্রোলারগুলিতে কোডটি ROMs বা FLASHes থেকে পড়ার অনুমতি দেয়। এর মধ্যে কয়েকটি স্কিমে অবিশ্বাস্যভাবে চালাক তবে কিছু অংশের পরিবারে অন্যের চেয়ে ভাল সাফল্যের জন্য কাজ করে। সুতরাং এই বাস্তবতা সম্পর্কে সচেতন হন তারপরে আপনি নিজের প্রোগ্রামটিকে চোখের ছাঁটাই থেকে রক্ষা করার চেষ্টা করবেন।
মেশিন কোডের বাইনারি ইমেজটিতে কারও হাত পড়লে যে কোনও মাইক্রোকন্ট্রোলার থেকে পড়েছিল, তা সে সুরক্ষিত মাইক্রোকন্ট্রোলার ছিল কিনা, তারা মেশিন কোডটি ডিসেসেম্বারার নামে একটি সরঞ্জামের মাধ্যমে প্রক্রিয়া করতে পারে। এটি বাইনারি ডেটাটিকে আবার অ্যাসেম্বলি ভাষা কোডে পরিণত করবে যা আপনার প্রোগ্রামের অ্যালগরিদমগুলি কীভাবে কাজ করে তা শিখতে চেষ্টা করার জন্য অধ্যয়ন করা যেতে পারে। মেশিন কোডটি সঠিকভাবে বিচ্ছিন্ন করা একটি বেদনাদায়ক কাজ যা প্রচুর পরিমাণে কাজ নিতে পারে। শেষ পর্যন্ত প্রক্রিয়াটি আমার বর্ণিত মত সংঠক কোডে নিয়ে যেতে পারে। যদি আপনার প্রোগ্রামটি কিছু উচ্চ স্তরের ভাষায় যেমন সি, সি ++ বা বেসিকের লিখিত হয় তবে এসেম্বলি কোডটি কেবল আপনার প্রোগ্রামের সংকলিত এবং সংযুক্ত ফলাফলের প্রতিনিধিত্ব করবে। উচ্চ স্তরের ভাষা স্তরে ফিরে পুরোপুরি ইঞ্জিনিয়ার চুরি কোডটি বিপরীত করা সম্ভব হয় না।
এর অর্থ কী তা হল একটি উচ্চ স্তরের ভাষায় আপনার এমবেডেড অ্যাপ্লিকেশন ফার্মওয়্যারটি লিখতে আসলে একটি উপকার হয়। এটি অন্য একটি স্তর সরবরাহ করে যা আপনার প্রোগ্রামকে পুরোপুরি বিপরীত ইঞ্জিনিয়ারিং করা শক্ত করে তোলে। এম্বেডেড অ্যাপ্লিকেশনটি সংকলন করতে কমপাইলারদের অনুকূলকরণের ক্ষেত্রে সর্বোপরি শিল্পের ব্যবহারের মাধ্যমে আরও বৃহত্তর সুবিধা হ'ল কারণ সর্বোচ্চ পারফরম্যান্স অপটিমাইজাররা আক্ষরিকভাবে প্রোগ্রামটিকে একটি বিশাল স্প্যাগেটি বাটিতে রূপান্তর করতে পারে যা ডজনগুলি কলকে সংক্ষিপ্ত সাবরুটিনগুলিতে পরিণত করে যা খুব শক্ত are একটি বিচ্ছিন্নতা মধ্যে সিদ্ধান্ত গ্রহণ করা।
বেশিরভাগ অভিজ্ঞ এম্বেড থাকা বিকাশকারীরা আপনাকে এগিয়ে যেতে এবং আপনার অ্যাপ্লিকেশনটিতে এমসিইউতে দেওয়া যে কোনও সুরক্ষা স্কিম ব্যবহার করতে বলবে .... তবে এটি আপনার পণ্যের রাস্তার শেষে নির্ভর করবে না। তারা আপনাকে বলবে যে প্রতিযোগিতায় এগিয়ে থাকার সর্বোত্তম উপায় হ'ল আপনার পণ্যকে ক্রমাগত আপগ্রেড করা যাতে হ্যাকাররা আপনার কোডটি ক্লোন করেছে এমন সময়কালের মধ্যে পুরানো সংস্করণগুলি তারিখের ও বিরক্তিকর হবে। চারপাশের কোডটি পরিবর্তন করুন, নতুন বৈশিষ্ট্য যুক্ত করুন, আপনার সমস্ত আই / ওএস এবং আপনার মনে হতে পারে এমন কোনও অন্যান্য জিনিস অদলবদল করতে আপনার পিসি বোর্ডগুলিকে সময়ে সময়ে স্পিন করুন। এভাবে আপনি প্রতিবারের মতো রেস জয় করতে পারবেন।