microcontroller and extracting

راهنمای کامل و تخصصی باز کردن قفل میکروکنترلر و استخراج برنامه

میکروکنترلرها قلب بسیاری از دستگاه‌های الکترونیکی مدرن هستند و بخش اصلی عملکرد هر محصول الکترونیکی را شکل می‌دهند. در بسیاری از پروژه‌ها، به‌خصوص زمانی که دستگاهی خراب می‌شود، تولیدکننده دیگر در دسترس نیست، یا نیاز به توسعه نسخه جدیدی از یک محصول وجود دارد، نیاز به استخراج کد میکروکنترلر یا خواندن برنامه میکرو قفل شده به وجود می‌آید.

این فرآیند که در صنعت با عنوان باز کردن قفل میکروکنترلر شناخته می‌شود، شامل روش‌ها و ابزارهایی است که به مهندسان امکان می‌دهد فایل هگز، فیوزبیت‌ها و کد برنامه را از میکروکنترلر استخراج کنند.

اما مهم است بدانیم که این کار نیازمند دانش تخصصی، ابزارهای پیشرفته و تجربه عملی است؛ زیرا هر اشتباه می‌تواند باعث پاک شدن دائمی اطلاعات داخل میکرو شود.

در این مقاله قدم‌به‌قدم و با زبانی دوستانه، به بررسی تمام جوانب موضوع می‌پردازیم:
از استخراج کد میکروکنترلر تا انتقال دوباره برنامه به میکرو و حتی کپی برنامه آی‌سی‌ها و استخراج برنامه از بردهایی مثل آردوینو.

Unlocking_microcontroller

فهرست مطالب

باز کردن قفل میکروکنترلر چیست؟

باز کردن قفل میکروکنترلر به فرآیندی گفته می‌شود که طی آن مهندسان تلاش می‌کنند محدودیت‌های امنیتی یک میکرو را دور بزنند تا بتوانند به برنامه داخلی آن دسترسی پیدا کنند. وقتی سازنده یا برنامه‌نویس می‌خواهد جلوی کپی برنامه آی‌سی یا برداشتن برنامه از روی میکرو را بگیرد، روی آن فیوزبیت‌ها، پروتکشن‌ها یا تنظیمات محافظتی قرار می‌دهد. نتیجه این می‌شود که:

  • نمی‌توانیم خواندن برنامه میکرو قفل شده را انجام دهیم

  • فایل هگز قابل استخراج نیست

  • دیباگ کردن و برنامه‌ریزی مجدد محدود می‌شود

  • حتی در برخی موارد، هر تلاش برای خواندن کد، باعث پاک شدن کامل حافظه فلش می‌شود

این سطح امنیت برای جلوگیری از مهندسی معکوس ضروری است، اما در بسیاری از پروژه‌ها — مخصوصاً زمانی که برد خراب شده یا سازنده دیگر در دسترس نیست — نیاز داریم که استخراج کد میکروکنترلر را انجام دهیم تا عملکرد سیستم را بازیابی کنیم.

باز کردن قفل میکروکار ساده‌ای نیست و معمولاً نیازمند:

  • ابزارهای سخت‌افزاری مخصوص

  • نرم‌افزارهای تخصصی

  • تجربه عملی در کار با فیوزبیت‌ها

  • آشنایی با معماری انواع میکروکنترلرها (AVR, PIC, ARM, STM32، 8051 و …)

اما در نهایت هدف اصلی، دسترسی به برنامه داخلی و بازیابی فایل هگز است.

روش‌های استخراج کد میکروکنترلر

استخراج برنامه از میکروکنترلر به روش‌های مختلفی انجام می‌شود. بسته به مدل میکرو، نحوه قفل شدن، و ابزارهای موجود، یکی از این شیوه‌ها انتخاب می‌شود:

۱. خواندن مستقیم فلش از طریق پروگرامر

ساده‌ترین روش در میکروهایی که قفل نیستند.

با استفاده از پروگرامرهایی مثل:

  • TL866

  • Pickit

  • ST-Link

  • AVR ISP

  • J-Link

می‌توان به‌طور مستقیم خواندن فایل هگز از میکرو را انجام داد.

2. دور زدن فیوزبیت‌های قفل

در این روش تلاش می‌شود با بهره‌گیری از آسیب‌پذیری‌ها یا حملات سخت‌افزاری، قفل‌ها را دور زد.
این شامل تکنیک‌هایی مثل:

  • Voltage glitching

  • Clock glitching

  • Chip decapsulation

  • Laser fault injection

این روش‌ها بیشتر در مراکز تخصصی انجام می‌شوند و برای کارهای صنعتی یا حساس کاربرد دارند.

3. استخراج کد از طریق پروتکل‌های ارتباطی

گاهی برنامه امکان دارد از طریق:

  • UART

  • SPI

  • I2C

  • SWD

ارسال یا بازخوانی شود.
در این حالت برنامه‌نویس قفل را به‌صورت کامل تنظیم نکرده و می‌توان با شنود ارتباط، کپی برنامه آی‌سی را انجام داد.

4. استخراج برنامه از روی برد (In-Circuit Extraction)

گاهی برد اجازه جداسازی آی‌سی را نمی‌دهد.
در این مواقع از روش‌های اتصال نقطه‌ای (Pogo Pin)، پروگرامرهای JTAG/SWD و یا اتصال پایه‌های ISP روی برد استفاده می‌شود.

خواندن برنامه میکرو قفل شده

خواندن برنامه میکرو قفل شده

خواندن برنامه میکروکنترلری که قفل شده است، یکی از چالش‌برانگیزترین بخش‌های مهندسی معکوس در صنعت الکترونیک است. زمانی که یک میکرو توسط فیوزبیت‌ها یا پروتکشن‌های داخلی قفل می‌شود، امکان استخراج کد میکروکنترلر از طریق روش‌های معمول پروگرامر وجود ندارد و معمولاً هنگام تلاش برای خواندن حافظه، پیغام خطا یا خروجی خالی (FFFF یا 0000) دریافت می‌کنیم.

اما واقعیت این است که قفل شدن دائماً به معنای غیرقابل‌خواندن بودن نیست. بسته به نوع میکروکنترلر، سطح قفل، و آسیب‌پذیری‌های آن، روش‌های مختلفی برای خواندن برنامه میکرو قفل شده وجود دارد.

در ادامه مهم‌ترین روش‌ها و نکات تخصصی این فرآیند را توضیح می‌دهیم.


چرا میکروکنترلر قفل می‌شود؟

قفل شدن میکروکنترلر با هدف جلوگیری از موارد زیر انجام می‌شود:

  • کپی شدن برنامه آی‌سی توسط رقبا

  • برداشتن برنامه از روی میکرو و استفاده در محصول مشابه

  • جلوگیری از مهندسی معکوس یک دستگاه

  • حفظ مالکیت فکری طراح اصلی

در میکروهای AVR، PIC، ARM و STM32 این قفل‌ها معمولاً توسط تنظیمات مخصوصی روی حافظه و فیوز بیت‌ها فعال می‌شوند.


روش‌های تخصصی برای خواندن برنامه از میکرو قفل شده

۱. استفاده از ضعف امنیتی در مدل‌های خاص میکروکنترلر

برخی از انواع AVR، PIC و حتی بعضی سری‌های STM32 در گذشته دچار نقص امنیتی بوده‌اند. این نقص‌ها اجازه می‌دهند با تکنیک‌های خاص، حتی در صورت فعال بودن فیوزبیت‌ها، استخراج برنامه میکروکنترلر انجام شود.

این روش‌ها شامل:

  • تزریق خطای ولتاژ (Voltage Glitch Attack)

  • حمله فرکانس (Clock Fault Injection)

  • بهره‌گیری از مسیرهای دیباگ ناقص

  • بازخوانی بیت‌های فلش در شرایط خاص حرارتی یا ولتاژی

این روش‌ها نیازمند تجهیزات پیشرفته و تجربه عملی هستند.


۲. استفاده از پروگرامرهای خاص برای دور زدن قفل

برخی از پروگرامرهای صنعتی قابلیت‌هایی دارند که پروگرامرهای معمولی مثل TL866 یا ST-Link ارائه نمی‌دهند. این پروگرامرها می‌توانند در شرایط خاص، پروتکل‌های سطح پایین را برای دسترسی غیرمجاز ولی فنی اجرا کنند.

در این روش بسته به معماری میکرو، امکان دارد بتوان:

  • فایل هگز را استخراج کرد

  • تنظیمات فیوزبیت‌ها را خواند

  • حتی حافظه بخش‌بخش بازیابی شد


۳. تکنیک Chip-Off یا جداسازی تراشه

در برخی پروژه‌ها، میکرو به صورت BGA یا SMD خاص روی برد نصب شده و روش‌های معمول پاسخ نمی‌دهند.
در این حالت از روش Chip-Off استفاده می‌شود:

  • آی‌سی از روی برد جدا می‌شود

  • زیر میکروسکوپ تمیز می‌شود

  • به پروب‌های مخصوص متصل می‌شود

  • سپس تلاش برای خواندن فایل هگز از میکرو انجام می‌شود

این روش معمولاً در بازیابی اطلاعات امنیتی و پروژه‌های حساس استفاده می‌شود.


۴. تکنیک Decapsulation (باز کردن بسته‌بندی آی‌سی)

در این روش پوسته پلاستیکی میکروکنترلر با مواد شیمیایی خاص حل می‌شود تا به سطح سیلیکون برسیم.
در ادامه با کمک لیزر یا پروب‌های میکروسکوپی تلاش می‌شود:

  • فیوزبیت‌ها پاک یا بی‌اثر شوند

  • قفل میکرو غیرفعال شود

  • برنامه داخلی بدون مشکل خوانده شود

این روش فوق‌العاده تخصصی است و در مراکز پیشرفته انجام می‌شود.


ریسک‌های خواندن برنامه میکرو قفل شده

اگر این کار توسط افراد کم‌تجربه انجام شود، احتمال دارد:

  • حافظه دائماً پاک شود

  • فیوزبیت‌ها اشتباه تغییر کنند

  • آی‌سی آسیب ببیند

  • برد دستگاه کلاً غیرقابل تعمیر شود

به همین دلیل توصیه می‌شود عملیات باز کردن قفل میکروکنترلر را فقط افراد متخصص یا مراکز دارای تجهیزات مناسب انجام دهند.

استخراج برنامه از میکروکنترلر — ابزارها و روش‌ها

استخراج برنامه از داخل یک میکروکنترلر (چه قفل شده و چه بدون قفل) یکی از مراحل کلیدی در تعمیرات پیشرفته، مهندسی معکوس، و بازطراحی بردهای الکترونیکی است. برای انجام این کار لازم است با ابزارهای سخت‌افزاری و نرم‌افزاری مناسب آشنا باشیم، چون هر نوع میکروکنترلر معماری و پروتکل‌ خاص خود را دارد.

در این بخش، به صورت کاملاً کاربردی و قابل‌استفاده در پروژه‌های واقعی، تمام ابزارهای رایج، روش‌های اتصال و تکنیک‌های استخراج برنامه را مرور می‌کنیم.


ابزارهای لازم برای استخراج برنامه از میکروکنترلر

برای خواندن حافظه داخلی یک میکروکنترلر، معمولاً به یکی از دسته‌های زیر نیاز است:


پروگرامرهای عمومی (Universal Programmers)

این پروگرامرها برای خواندن، نوشتن و کپی کردن انواع آی‌سی‌ها استفاده می‌شوند.
مناسب برای:

  • خواندن فایل هگز از میکرو

  • کپی برنامه آی‌سی

  • آی‌سی‌های عمومی مثل 8051، EEPROM، AVR، PIC

از معروف‌ترین نمونه‌ها می‌توان به موارد زیر اشاره کرد:

  • TL866-II Plus

  • RT809H

  • VP-998

  • Wellon series

این دستگاه‌ها مناسب پروژه‌هایی هستند که در آن‌ها میکرو قفل نشده باشد یا امکان آی‌سی‌برداری وجود داشته باشد.


پروگرامرهای اختصاصی معماری‌ها

بسیاری از معماری‌ها پروگرامرهای مخصوص خود را دارند که برای اتصال روی برد یا خارج از برد استفاده می‌شود.

نمونه‌ها:

  • AVR ISP MkII یا USBasp → برای ATmega، ATtiny

  • Pickit 3 / 4 → برای PIC

  • ST-Link V2 → برای STM32

  • J-Link → برای ARM Cortex

  • ESP Programmer → برای ESP8266 / ESP32

این پروگرامرها امکان‌های زیر را فراهم می‌کنند:

  • اتصال JTAG/SWD/ISP

  • برنامه‌ریزی روی برد (ISP)

  • دیباگ و خواندن بخش‌های آزاد حافظه

  • تلاش برای استخراج برنامه از میکروهای نیمه‌قفل


ابزارهای پیشرفته مهندسی معکوس

برای باز کردن قفل میکروکنترلر و استخراج اطلاعات از مدل‌های سخت، ابزارهای حرفه‌ای زیر استفاده می‌شوند:

  • ChipWhisperer

  • Segger Flasher

  • Proxmark Logic & Glitch Tools

  • و تجهیزات مخصوص Decapsulation مثل لیزر یا Acid Etching Tools

این ابزارها معمولاً در پروژه‌هایی استفاده می‌شوند که میکرو کاملاً قفل شده است و روش‌های معمول قابل استفاده نیست.


روش‌های اتصال برای استخراج برنامه میکرو

۱. اتصال خارج از برد (Off-Board Programming)

در این روش آی‌سی از برد جدا می‌شود و مستقیماً به پروگرامر متصل می‌گردد.
این روش مناسب زمانی است که:

  • برد آسیب دیده

  • مسیرهای پروگرام روی برد قطع شده

  • یا یک روش تمیز و استاندارد می‌خواهیم

مزایا:

  • ریسک کمتر

  • دسترسی کامل به پایه‌ها

  • امکان خواندن فایل هگز از میکرو بدون تداخل با دیگر بخش‌ها


۲. اتصال روی برد (In-Circuit Programming / ISP)

در این روش، میکرو بدون جداسازی و در همان حالت روی برد برنامه‌ریزی یا خوانده می‌شود.

اتصالات متداول:

  • ISP (برای AVR)

  • ICSP (برای PIC)

  • JTAG

  • SWD

  • UART Bootloader Mode

این روش زمانی کاربرد دارد که:

  • آی‌سی BGA باشد

  • جدا کردن آن ریسک آسیب داشته باشد

  • یا دستگاه باید پس از استخراج برنامه دوباره بدون تعمیرات ظاهری کار کند


۳. استخراج از طریق پروتکل‌های ارتباطی

گاهی برنامه‌نویس مسیرهای امنیتی را کامل فعال نکرده است و می‌توان از طریق پورت‌های ارتباطی، اطلاعات را شنود یا دانلود کرد.

مثال‌ها:

  • خواندن حافظه از طریق UART در بوت‌لودر

  • خواندن SPI Flash در میکروهای ARM

  • استفاده از I2C/SPI Sniffer

  • استخراج ROM در میکروهای قدیمی 8051

این روش‌ها برای برداشتن برنامه از روی میکرو بدون درگیر شدن مستقیم با قفل‌های سخت‌افزاری بسیار کاربردی است.


استخراج برنامه از میکرو؛ مرحله‌به‌مرحله

۱. شناسایی معماری میکروکنترلر
(AVR/PIC/ARM/8051/ESP و …)

  1. بررسی قفل بودن یا نبودن میکرو
    از طریق پروگرامر یا دیتاشیت فیوزبیت‌ها.

  2. انتخاب روش اتصال

    • روی برد

    • خارج از برد

    • پروتکل ارتباطی

    • روش‌های حمله سخت‌افزاری (برای موارد قفل)

  3. تلاش برای خواندن فایل هگز
    توسط ابزارهایی مثل TL866، Pickit، ST-Link، J-Link

  4. تجزیه و تحلیل خروجی‌ها

    • اگر فایل خالی یا FFFF بود → میکرو قفل است

    • اگر بخشی از داده برگشت → احتمال نیمه‌قفل یا آسیب‌دیدگی

  5. استفاده از روش‌های تخصصی‌تر در صورت نیاز
    Glitching، decap، استفاده از پروگرامرهای صنعتی و …


چه نوع اطلاعاتی را می‌توان استخراج کرد؟

با توجه به نوع معماری، معمولاً امکان استخراج موارد زیر وجود دارد:

  • فایل HEX کامل

  • تنظیمات فیوزبیت‌ها

  • بخش‌هایی از EEPROM داخلی

  • داده‌های SRAM در شرایط خاص

  • بوت‌لودر داخلی

  • کد برنامه اصلی

خواندن فایل هگز از میکرو و نحوه کار با آن

یکی از مهم‌ترین مراحل در مهندسی معکوس و تعمیرات تخصصی، خواندن فایل هگز از میکروکنترلر است. فایل هگز (HEX) در واقع نسخه‌ای قابل‌خواندن از محتوای حافظه فلش میکروکنترلر است؛ یعنی همان برنامه‌ای که هنگام اجرای دستگاه در حال اجراست. این فایل معمولاً شامل کد ماشین، آدرس‌دهی حافظه و ساختار برنامه‌ریزی است و پس از استخراج می‌توان آن را در یک میکرو مشابه ریخت یا روی آن تحلیل انجام داد.

در این بخش به صورت کامل توضیح می‌دهیم که فایل هگز چیست، چگونه از میکرو استخراج می‌شود، چه نکاتی باید رعایت شود و پس از استخراج چگونه می‌توان با آن کار کرد.


فایل HEX چیست و چه کاربردی دارد؟

فایل هگز یک فرمت متنی بر پایه اعداد هگزادسیمال است که اطلاعات حافظه میکروکنترلر را در قالب آدرس‌های منظم ذخیره می‌کند. این فایل معمولاً شامل سه بخش اصلی است:

  • آدرس‌های حافظه

  • داده‌های واقعی برنامه

  • چک‌سام برای بررسی صحت داده‌ها

کاربردهای فایل هگز:

  • انتقال برنامه از یک میکرو به میکروی دیگر

  • تحلیل برنامه در مهندسی معکوس

  • استفاده در تعمیرات بردهای صنعتی

  • بازطراحی و نمونه‌سازی مجدد یک محصول

اگر هدف شما استخراج برنامه میکروکنترلر یا کپی برنامه آی‌سی باشد، فایل هگز اولین خروجی مهم این فرآیند است.


روش‌های خواندن فایل هگز از میکرو

۱. استفاده از پروگرامرهای استاندارد

رایج‌ترین روش، استفاده از پروگرامرهایی مانند:

  • TL866

  • ST-Link

  • Pickit

  • J-Link

  • USBasp

  • RT809H

این پروگرامرها معمولاً گزینه‌ای با عنوان Read / Read Flash / Read Program Memory دارند که فایل هگز را مستقیماً استخراج می‌کند.

اگر میکرو قفل نباشد، این مرحله ساده و سریع انجام می‌شود.


۲. خواندن فایل هگز روی برد (In-Circuit)

در بسیاری از پروژه‌ها امکان جدا کردن آی‌سی وجود ندارد، بنابراین فایل هگز از طریق:

  • ISP

  • ICSP

  • JTAG

  • SWD

  • SPI Programming

خوانده می‌شود.

در این روش باید مطمئن بود که روی برد مقاومت‌، خازن یا مسیرهای دیگر روی سیگنال خواندن تأثیر نگذارند.


۳. استخراج از میکروهای قفل‌شده

در صورت فعال بودن فیوزبیت‌های قفل، خروجی هگز معمولاً مقادیر خالی (FFFF) خواهد بود.

اما در بسیاری از مدل‌ها با استفاده از روش‌های زیر امکان خواندن برنامه میکرو قفل شده وجود دارد:

  • Fault Injection

  • Glitch Attack

  • Decapsulation

  • استفاده از دستگاه‌های صنعتی استخراج کد

این روش‌ها در مراکز تخصصی انجام می‌شود و برای پروژه‌هایی ضروری است که سازنده در دسترس نیست یا برد ارزش بالایی دارد.


بررسی صحت فایل HEX پس از استخراج

بعد از ذخیره فایل هگز، چند نکته مهم باید بررسی شود:

  1. حجم فایل
    آیا با حجم حافظه فلش میکرو هماهنگ است؟

  2. باز شدن فایل در نرم‌افزارهای تحلیل
    مثل HxD، Notepad++، یا نرم‌افزارهای پروگرامر.

  3. بررسی چک‌سام
    بسیاری از پروگرامرها پس از خواندن، چک‌سام را نمایش می‌دهند.

  4. تست روی میکرو مشابه
    برنامه روی یک میکروکنترلر مشابه ریخته می‌شود تا عملکرد بررسی شود.


فایل HEX را چگونه ویرایش یا تحلیل کنیم؟

پس از استخراج هگز، می‌توان آن را با ابزارهای زیر تحلیل کرد:

  • Disassemblerها مثل IDA، Ghidra، AVR Studio

  • Hex Editor‌ها برای بررسی داده‌ها

  • Simulators و Emulators برای اجرای کد بدون سخت‌افزار

در تحلیل برنامه‌ها، معمولاً اهداف زیر دنبال می‌شود:

  • یافتن توابع مهم

  • پیدا کردن الگوریتم‌ها

  • بررسی جداول کالیبراسیون

  • استخراج اطلاعات ذخیره‌شده در EEPROM


رایج‌ترین مشکلات در استخراج فایل HEX

  • خروجی FFFF یا 0000: میکرو احتمالاً قفل است.

  • حافظه ناقص: برد مشکل دارد یا پروگرامر اتصال درست ندارد.

  • تداخل روی برد: مسیرهای دیگر باعث خواندن اشتباه داده‌ها می‌شوند.

  • فیوزبیت‌های اشتباه: برنامه‌نویس اصلی محدودیت‌های امنیتی اضافی فعال کرده است.

فیوزبیت‌های قفل میکروکنترلر و نقش آن‌ها در امنیت برنامه

فیوزبیت‌ها یکی از مهم‌ترین اجزای امنیتی در میکروکنترلرها هستند که تعیین می‌کنند آیا اجازه خواندن، نوشتن یا دیباگ روی میکرو وجود دارد یا نه. این بخش به‌عنوان خط دفاعی اصلی برای جلوگیری از استخراج کد میکروکنترلر، خواندن برنامه میکرو قفل شده و کپی برنامه آی‌سی عمل می‌کند.
اما درک دقیق آن‌ها می‌تواند به شما کمک کند تا بفهمید یک میکرو چگونه قفل شده و چه محدودیت‌هایی دارد.


فیوزبیت‌ها چه هستند؟

فیوزبیت‌ها مجموعه‌ای از تنظیمات سخت‌افزاری‌اند که در حافظه داخلی میکرو ذخیره شده‌اند. این بیت‌ها:

  • قابلیت خواندن برنامه را محدود می‌کنند

  • امکان دیباگ را غیرفعال می‌کنند

  • سرعت و منبع کلاک را تعیین می‌کنند

  • حافظه بوت‌لودر را مدیریت می‌کنند

  • سطوح امنیتی مختلف را فعال می‌کنند

به طور ساده:
فیوزبیت‌ها مانند کلیدهای تنظیماتی هستند که رفتار میکرو را از سطح امنیت تا نحوه اجرای برنامه کنترل می‌کنند.


انواع فیوزبیت‌ها در میکروکنترلرها

۱. فیوزبیت‌های امنیتی (Lock Bits)

این بیت‌ها مشخص می‌کنند آیا اجازه خواندن یا کپی گرفتن از برنامه وجود دارد یا خیر.
برای مثال:

  • LB1 و LB2 در AVR:

    • حالت 0: آزاد

    • حالت 1: قفل خواندن

    • حالت 2: قفل کامل نوشتن و خواندن

  • RDP Level در STM32:

    • Level 0: بدون محدودیت

    • Level 1: جلوگیری از خواندن

    • Level 2: قفل دائمی غیرقابل بازگشت


۲. فیوزهای مربوط به بوت‌لودر

این فیوزها تعیین می‌کنند:

  • از بخش Boot اجرا شود یا از بخش اصلی برنامه

  • چه مقدار حافظه به Bootloader اختصاص پیدا کرده باشد

در پروژه‌هایی که استخراج برنامه از برد آردوینو انجام می‌شود، این بخش اهمیت زیادی دارد.


۳. فیوزهای مربوط به کلاک و منابع تغذیه

برای تعیین:

  • کلاک داخلی یا خارجی

  • توان مصرفی

  • Brown-out detection

  • برنامه‌ریزی سریع یا آرام


۴. فیوزهای مربوط به منابع جانبی (Peripherals)

مثل:

  • فعال یا غیرفعال کردن JTAG

  • فعال‌سازی SPI Programming

  • فعال‌سازی SWD در میکروهای ARM

غیرفعال شدن این موارد به‌صورت مستقیم مانع استخراج برنامه میکروکنترلر می‌شود.


چگونه بفهمیم میکرو قفل است؟

در هنگام اتصال پروگرامر، معمولاً یکی از نتایج زیر ظاهر می‌شود:

  1. مقادیر حافظه FFFF یا 0000 نمایش داده می‌شود → قفل خواندن فعال است

  2. پروگرامر اجازه Read نمی‌دهد → امنیت سطح بالا فعال است

  3. پروگرامر فقط می‌نویسد و نمی‌خواند → میکرو در حالت Write-Only است

  4. شناسه دستگاه خوانده می‌شود ولی حافظه نه → Lock Bits فعال‌اند


بازکردن قفل میکروکنترلر با توجه به فیوزبیت‌ها

باز کردن قفل می‌تواند بسته به مدل میکرو بسیار متفاوت باشد. چند روش کلی:

۱. Glitching یا حملات ولتاژی

با ایجاد اختلال لحظه‌ای در تغذیه، می‌توان فیوزبیت‌ها را دور زد.

۲. Decapsulation و خواندن حافظه با میکروسکوپ الکترونی

روش صنعتی و بسیار پیشرفته برای تراشه‌های خاص.

۳. دسترسی به رابط‌های غیرفعال‌شده با روش‌های فیزیکی

مثلاً اگر JTAG غیرفعال شده باشد، در برخی مدل‌ها امکان فعال‌سازی مجدد با اتصال‌های Direct Pad وجود دارد.

۴. پشتیبانی دستگاه‌های تخصصی کپی آی‌سی

مثل RT809H، Xeltek، ChipProg و …
این دستگاه‌ها گاهی روش‌های اختصاصی برای عبور از فیوزبیت‌ها دارند.


خطرات دستکاری فیوزبیت‌ها

  • پاک شدن کامل برنامه

  • قفل دائمی و غیرقابل بازگشت

  • از کار افتادن میکرو

  • نداشتن امکان بازیابی پس از نوشتن اشتباه یک بیت

به همین دلیل هنگام کار با فیوزبیت‌ها حتماً باید:

  • مدل دقیق میکرو

  • دیتاشیت

  • قابلیت‌های امنیتی

  • نسخه پروگرامر

به‌درستی بررسی شود.

استخراج برنامه از برد آردوینو – روش‌ها، محدودیت‌ها و نکات امنیتی

بردهای آردوینو به‌دلیل ساختار ساده، فراوانی در پروژه‌های صنعتی کوچک، و استفاده گسترده در نمونه‌سازی، یکی از رایج‌ترین بردهایی هستند که کاربران نیاز به استخراج برنامه از آن‌ها پیدا می‌کنند.
در این بخش به‌طور کامل توضیح می‌دهیم که آیا می‌توان کد را از آردوینو خواند، چه محدودیت‌هایی وجود دارد و چه روش‌هایی در عمل استفاده می‌شود.


آیا می‌توان برنامه آردوینو را استخراج کرد؟

پاسخ کوتاه:
در بیشتر موارد بله، اما بستگی به قفل بودن میکرو و نوع بوت‌لودر دارد.

میکروکنترلرهای روی بردهای آردوینو (مثل ATmega328P، ATmega2560 و …) معمولاً دارای سه بخش امنیتی هستند:

  1. Lock Bits (فیوزبیت‌های امنیتی)

  2. Bootloader

  3. حافظه برنامه (Flash)

اگر فیوزبیت‌های قفل فعال نشده باشند، به‌راحتی می‌توان:

  • خواندن فایل هگز از میکرو

  • کپی برنامه آی‌سی

  • استخراج برنامه میکروکنترلر

را انجام داد.

اما اگر فیوزبیت‌های قفل فعال باشند، آردوینو هم مانند هر میکروکنترلر قفل‌شده دیگر قابل خواندن نیست مگر با رویکردهای تخصصی‌تر.


ساختار امنیتی آردوینو چگونه است؟

1. بوت‌لودر آردوینو

Bootloader به آردوینو اجازه می‌دهد از طریق USB برنامه‌ریزی شود.
این بخش معمولاً بدون قفل است، اما در برخی پروژه‌ها ممکن است توسعه‌دهنده آن را تغییر داده یا قفل کرده باشد.

2. فیوزبیت‌های قفل

سه سطح امنیتی در میکرو ATmega وجود دارد:

  • No Lock (بدون قفل) → قابل استخراج

  • Read-Only Lock (قفل خواندن) → امکان خواندن Flash وجود ندارد

  • Full Lock (قفل کامل) → امکان خواندن و نوشتن محدود می‌شود

اگر Lock فعال باشد، استخراج برنامه با روش‌های معمولی ممکن نیست.


روش‌های استخراج برنامه از آردوینو

روش ۱ – خواندن مستقیم با پروگرامر

اگر قفل نباشد:

  • USBasp

  • AVRISP

  • Atmel ICE

  • Xeltek و RT809H

به‌راحتی حافظه Flash را می‌خوانند.

خروجی شامل:

  • فایل HEX

  • EEPROM

  • فیوزبیت‌ها

این روش استانداردترین حالت استخراج برنامه میکروکنترلر است.


روش ۲ – استخراج از طریق Bootloader

در برخی موارد می‌توان با ارسال دستورات مخصوص Bootloader،
بخش برنامه را بدون استفاده از پروگرامر خواند.

محدودیت: فقط در صورتی ممکن است که Bootloader اجازه Read داشته باشد.


روش ۳ – بازیابی از کش دستگاه یا نرم‌افزارهای توسعه

در سیستم‌هایی که نرم‌افزار توسعه قبلاً مستقیماً با آردوینو کار کرده، ممکن است نسخه‌ای از HEX در:

  • Temp سیستم

  • پوشه build

  • کش Arduino IDE

یافت شود.


روش ۴ – روش‌های پیشرفته برای آردوینوهای قفل‌شده

برای میکروهای قفل‌شده:

  • Glitching

  • Decapsulation

  • Fault Injection

  • استفاده از دستگاه‌های تخصصی Crack

ممکن است قابل اجرا باشد؛ اما نیازمند تخصص بالاست و خطر پاک شدن برنامه وجود دارد.

این بخش معمولاً در پروژه‌های صنعتی یا بردهای بدون سورس کاربرد دارد.


چگونه بفهمیم آردوینو قفل است؟

با اتصال پروگرامر:

  • اگر حافظه Flash فقط 0xFF یا 0x00 نشان دهد → قفل

  • اگر دستور READ اجازه اجرا ندهد → قفل

  • اگر فقط اطلاعات Device ID نمایش داده شود → قفل


آیا امکان انتقال برنامه استخراج‌شده به یک میکرو دیگر وجود دارد؟

بله، در صورت موفق بودن استخراج:

  • می‌توانید فایل HEX را روی میکرو دیگری پروگرام کنید

  • یا کل پکیج شامل EEPROM + فیوزبیت‌ها را انتقال دهید

  • در برخی پروژه‌ها نیاز است Bootloader هم منتقل شود

این فرآیند همان کپی برنامه آی‌سی در آردوینو است.


نکات مهم هنگام استخراج برنامه از آردوینو

  • همیشه پیش از خواندن، یک Backup از فیوزبیت‌ها بگیرید

  • آردوینوهای چینی گاهی فیوزبیت‌ها را متفاوت تنظیم می‌کنند

  • در پروژه‌های صنعتی، قفل بودن میکرو بسیار رایج است

  • در صورت تلاش نادرست برای حذف قفل، ممکن است Flash پاک شود

کپی کردن برنامه آی‌سی و انتقال آن به یک میکروکنترلر دیگر (Clone & Duplicate MCU Program)

کپی کردن برنامه آی‌سی یکی از مهم‌ترین مراحل در استخراج کد میکروکنترلر و انتقال برنامه به یک میکروکنترلر جدید است.
این فرآیند در تعمیرات تخصصی، تولید دوباره دستگاه‌های بدون سورس، جایگزینی آی‌سی آسیب‌دیده و مهندسی معکوس کاربرد گسترده‌ای دارد.

در این بخش تمام مراحل، نکات، چالش‌ها و روش‌های استاندارد Clone کردن آی‌سی را توضیح می‌دهیم.


کپی آی‌سی چیست؟

کپی آی‌سی یا MCU Cloning یعنی:

  1. برداشتن برنامه از روی میکرو

  2. استخراج کامل داده‌های حافظه:

    • Flash

    • EEPROM

    • فیوزبیت‌ها / Lock Bits

  3. انتقال همین اطلاعات دقیقاً به یک میکروکنترلر مشابه یا سازگار

  4. اجرای صحیح دستگاه بدون تغییر رفتار اصلی آن

این کار گاهی به‌عنوان “کپی کامل آی‌سی” یا “Clone 1:1” هم شناخته می‌شود.


مراحل کپی کردن برنامه از یک آی‌سی

۱. شناسایی نوع میکروکنترلر

اولین قدم این است که بدانیم:

  • برند میکرو چیست؟ (AVR، PIC، ARM، STM32، Nuvoton، ESP، و …)

  • مدل دقیق و پکیج آن چیست؟

  • آیا Lock فعال است یا خیر؟

بدون این اطلاعات، کپی‌برداری امکان‌پذیر نیست.


۲. استخراج فایل هگز از میکرو اصلی

اگر میکرو قفل نباشد، معمولاً سه بخش ذخیره می‌شود:

  • FLASH.hex → برنامه اصلی

  • EEPROM.hex → داده‌های ذخیره‌شده

  • Fuse/Config Bits → تنظیمات امنیتی و عملکردی

این مرحله معمولاً با پروگرامرهای زیر انجام می‌شود:

  • USBasp / AVRISP

  • MPLAB Programmer

  • ST-LINK / J-LINK / CMSIS-DAP

  • RT809H

  • Xeltek SuperPro

این مرحله همان خواندن برنامه میکرو قفل نشده است.


۳. بررسی و ذخیره فیوزبیت‌ها / رجیسترهای امنیتی

فیوزبیت‌ها تعیین می‌کنند:

  • کلاک از کجا تأمین شود

  • حافظه Bootloader چطور باشد

  • آیا میکرو قفل است یا نه

در کپی‌برداری ۱۰۰٪ مشابه، این بخش حیاتی است.


۴. پروگرام کردن یک آی‌سی جدید

پس از استخراج موفق برنامه:

  1. Flash پروگرام می‌شود

  2. EEPROM نوشته می‌شود

  3. فیوزبیت‌ها تنظیم می‌شوند

  4. دستگاه تست می‌شود

اگر حتی یکی از فیوزبیت‌ها اشتباه نوشته شود، دستگاه ممکن است:

  • روشن نشود

  • در Boot گیر کند

  • یا به‌طور کامل قفل شود


کپی آی‌سی در صورت قفل بودن میکروکنترلر

اگر میکرو قفل باشد، مراحل معمولی جواب نمی‌دهند.

در این حالت باید از روش‌های حرفه‌ای استخراج کد میکروکنترلر استفاده شود:

روش‌های تخصصی:

  • Glitch Attack → اختلال در Clock یا Voltage

  • Decapsulation & Chemical Etching → باز کردن پوسته تراشه

  • Laser/SEM Reading → خواندن مستقیم سلول‌های حافظه

  • Bypass Security Fuse در مدل‌های قدیمی‌تر

  • استفاده از دستگاه‌های Crack مخصوص

این روش‌ها تنها در مراکز تخصصی استفاده می‌شوند،
و برای کاربردهای تعمیراتی یا بازیابی اطلاعات بسیار رایج هستند.


انتقال برنامه از یک میکرو به مدل دیگر

گاهی کاربر می‌خواهد برنامه را به:

  • مدل جدیدتر

  • نسخه SMD یا DIP

  • نسخه سازگار از یک برند دیگر

منتقل کند.

این کار همیشه امکان‌پذیر نیست مگر اینکه:

  • معماری شبیه باشد

  • منابع سخت‌افزاری مشابه باشند

  • پورت‌ها و تایمرها سازگاری داشته باشند

اگر این شرایط فراهم باشد، کپی برنامه آی‌سی در قالب یک پروژه جدید ممکن می‌شود.


چالش‌های کپی آی‌سی

  • قفل بودن میکرو

  • تفاوت نسخه Bootloader

  • ارتباطات UART/SPI/I2C که ممکن است کدنویسی سفارشی شده باشد

  • وجود CRC و چک‌سام در پروژه

  • فعال بودن Read-Out Protection

  • آسیب‌دیدگی جزئی حافظه Flash

در چنین شرایطی نیاز است از روش‌های بازیابی پیشرفته استفاده شود.


آیا کپی کردن آی‌سی قانونی است؟

این موضوع بستگی به شرایط دارد:

  • اگر متعلق به پروژه خودتان باشد → بله

  • اگر برای تعمیر دستگاه مشتری باشد → معمولاً مجاز است

  • اگر برای ساخت نمونه جایگزین باشد → در اکثر کشورها قابل پذیرش است

  • اگر برای انتشار یا فروش نسخه غیرقانونی باشد → غیرمجاز است


نتیجه‌گیری

کپی کردن برنامه آی‌سی یک فرآیند بسیار تخصصی است که ترکیبی از:

  • استخراج داده

  • تحلیل امنیت

  • پروگرام دقیق

  • و گاهی مهندسی معکوس

را شامل می‌شود.
با انجام صحیح مراحل، می‌توان یک آی‌سی را به‌صورت ۱۰۰٪ مشابه روی مدل دیگر تکرار کرد و دستگاه اصلی را بدون تغییر رفتار دوباره اجرا کرد.

جمع‌بندی نهایی: مسیر کامل باز کردن قفل میکروکنترلر و استخراج برنامه

در این مقاله یک مسیر کامل و مرحله‌به‌مرحله برای آشنایی با بازکردن قفل میکروکنترلر و روش‌های استخراج برنامه میکروکنترلر ارائه شد. از ساختار امنیتی MCU‌ها گرفته تا نحوه خواندن حافظه، کپی کردن برنامه آی‌سی، استخراج فایل HEX، انتقال آن به میکرو جدید، و بررسی فیوزبیت‌ها—all covered.

در واقع، شما اکنون یک دید جامع دارید از اینکه:

  • چطور خواندن برنامه میکرو قفل شده انجام می‌شود

  • چه روش‌هایی برای استخراج کد میکروکنترلر وجود دارد

  • فیوزبیت‌ها چگونه کار می‌کنند

  • چگونه می‌توان برنامه را از یک آردوینو یا هر MCU دیگری استخراج کرد

  • روش استاندارد و روش پیشرفته برای کپی برنامه آی‌سی چیست

  • چه ابزارهایی برای این کار استفاده می‌شود

  • و در چه شرایطی امکان باز کردن قفل وجود دارد

این دانش برای برنامه‌نویسان، تکنسین‌ها، مهندسان الکترونیک و شرکت‌هایی که با دستگاه‌های بدون سورس کد کار می‌کنند، بسیار کاربردی است.


نکات کلیدی که باید همیشه در ذهن داشته باشید

۱. امنیت میکروکنترلرها جدی است

فیوزبیت‌ها، Bootloader، Read-Out Protection و لایه‌های امنیتی دیگر سبب می‌شوند که برخی میکروها به‌راحتی خوانده نشوند. در بسیاری از موارد نیاز به تجهیزات تخصصی وجود دارد.

۲. استخراج برنامه همیشه امکان‌پذیر نیست

در برخی مدل‌ها سطح امنیتی غیرقابل بازگشت وجود دارد
(مثلاً RDP Level 2 در STM32).

۳. همیشه قبل از پروگرام، فیوزبیت‌ها را ذخیره کنید

اشتباه در فیوزها می‌تواند باعث شود میکرو:

  • بوت نشود

  • قفل شود

  • یا حتی نیاز به پروگرام با ولتاژ بالا پیدا کند

۴. کپی کردن آی‌سی نیازمند دقت بالا است

اگر هدف شما یک کپی ۱۰۰٪ مشابه است،
حتماً FLASH + EEPROM + FUSE باید دقیق و کامل استخراج و دوباره نوشته شود.

۵. استخراج برنامه از آردوینو ساده‌تر است، ولی همیشه امکان‌پذیر نیست

در صورت قفل بودن Lock Bits، نیاز به روش‌های تخصصی خواهد بود.

۶. انتقال برنامه به میکرو جدید باید با تطابق کامل انجام شود

حتی تفاوت کوچک در Bootloader، سرعت کلاک، یا Memory Mapping
می‌تواند مشکل ایجاد کند.

این مقاله برای چه کسانی مفید است؟

  • تعمیرکاران و تکنسین‌های الکترونیک

  • سازندگان دستگاه که سورس کد در دسترس ندارند

  • مهندسان معکوس‌کار

  • توسعه‌دهندگان نرم‌افزارهای Embedded

  • شرکت‌های صنعتی و تولیدکنندگان دستگاه

  • افراد علاقه‌مند به امنیت یکی از MCUها

جمع‌بندی یک‌خطی

باز کردن قفل میکروکنترلر ترکیبی از دانش الکترونیک، امنیت سخت‌افزار و ابزارهای تخصصی است و با تحلیل صحیح فیوزبیت‌ها، استخراج برنامه و انتقال آن به میکرو جدید، می‌توان دستگاه‌های بدون سورس را دقیقاً بازتولید یا تعمیر کرد.

تماس با ما

برای مشاوره و ثبت درخواست خود همین حالا با تیم ReverseTech(زیرمجموعه ایده تجهیز مهر) تماس بگیرید.