Обратное проектирование МК

Взлом микроконтроллеров - MikaTech

Наши ценности и цели

О MikaTech

Время пролетело быстро: с того дня, когда мы выполнили наш первый проект по обратному проектированию МК 8051 в 1998 году, до момента создания нашей лаборатории стоимостью в миллион долларов в 2012 году прошло 14 лет. Теперь мы начинаем новый бизнес по разработке встраиваемых визуальных систем, надеемся прослужить ещё 10 лет.

подпись Peter Lee Сооснователь и генеральный директор

Архитектура и программирование МК 8051 для обратного проектирования

Глава 1: Введение в микроконтроллеры

Предисловие

История электроники началась с электричества. Сначала люди жили бок о бок с электрической энергией, не осознавая её огромного потенциала, и та эпоха оставалась спокойной. Затем пришёл Фарадей, который шаг за шагом запустил колесо электронных инноваций...

Вскоре появились первые машины, работающие на этом новом источнике энергии. Прошли десятилетия, и когда обычные люди постепенно привыкли к этим электрическим устройствам и перестали пристально следить за исследованиями новых технических специалистов, возникла новаторская идея: электроны можно управлять внутри стеклянных вакуумных ламп для создания функциональных схем. То, что сначала казалось остроумной экспериментальной концепцией, вскоре стало необратимым. Область электроники официально родилась, и колесо технического прогресса начало вращаться всё быстрее...

Новые дисциплины принесли новых практиков. Заводской персонал в синих рабочих халатах сменили лаборанты в белых халатах, и группа специалистов по электронике вышла на историческую арену. Пока широкая публика смотрела на эти технологические прорывы с шоком и замешательством, исследователи разделились на два лагеря: аппаратные разработчики и программные разработчики. Обе группы, моложе своих предшественников, были полны страсти и творческих идей, но шли разными путями. Программная команда продвигала свои теории постепенно и методично, в то время как инженеры-аппаратчики, вдохновлённые успехами, рисковали и изобрели транзистор.

До этого момента технологическое развитие всё ещё можно было контролировать, и широкая публика оставалась в неведении. Однако это состояние не могло длиться вечно и привело к неизбежному повороту. Введённые в заблуждение наивным предположением, что ограничение коммерциализации может замедлить технологическую эволюцию и вернуть общество к более простым временам, массовые потребительские рынки открыли свои двери для продуктов электронной промышленности, формируя неразрывный цикл спроса и предложения. Падающие цены на компоненты сделали электронное оборудование доступным для широкой аудитории, и колесо инноваций ускорилось до неуправляемости...

Вскоре появились первые интегральные схемы и микропроцессоры общего назначения, что ещё больше снизило цены на компьютеры и другое электронное оборудование. Вычислительные устройства стали доступны для покупки повсюду, завершая очередной цикл развития. Обычные граждане получили доступ к персональным компьютерам, что ознаменовало официальное начало компьютерной эры...

Пока разворачивалась эта технологическая революция, любители электроники и профессиональные инженеры — также разделённые на аппаратные и программные группы и защищённые относительной анонимностью — продолжали день и ночь совершенствовать свои проекты. В конце концов, в сообществе возник важный вопрос: почему бы не разработать универсальную интегральную схему? Небольшой, недорогой, перепрограммируемый чип, который можно было бы применять во всех областях электроники, встраивать в любое оборудование или систему по мере необходимости. На тот момент производственные технологии и рыночный спрос были достаточно зрелыми, чтобы поддержать такое творение. Не было причин сдерживаться. Аппаратные и программные концепции сошлись, и инженеры окончательно утвердили архитектуру первого интегрального чипа, назвав его МИКРОКОНТРОЛЛЕРОМ (МК).

Изобретение микроконтроллера произвело революцию во всей индустрии встраиваемых систем, однако эта беспрецедентная программируемая возможность также создала острую потребность в защите интеллектуальной собственности. Сегодня большая часть аппаратного обеспечения современных МК сосредоточена на встроенных механизмах безопасности, таких как биты защиты и аппаратные перемычки, которые блокируют несанкционированное внешнее чтение внутреннего кода прошивки. Тем не менее, как будет подробно описано в этой главе, независимо от того, насколько надёжными кажутся встроенные средства защиты МК, они становятся уязвимыми для обратного проектирования, как только злоумышленник получает физический доступ к чипу. Злоумышленники обычно применяют такие технические подходы, как декапсуляция чипа, лазерное микрозондирование и внедрение ошибок, чтобы отключить защитные блокировки и извлечь полные образы прошивки. Постоянная гонка вооружений между разработчиками средств защиты и злонамеренными обратными инженерами постоянно совершенствует защитные механизмы, эволюционируя от примитивных битов защиты до сложных аппаратных ускорителей шифрования. Освоение этих принципов безопасности так же важно, как и изучение базовой архитектуры МК. Микроконтроллер без достаточной защиты рискует полным дублированием кода и функциональным клонированием. Эта вводная глава закладывает основу для глубокого погружения в аппаратные и программные блоки, которые обеспечивают микроконтроллерам исключительную универсальность, а также их врожденные уязвимости безопасности.

1.1 Что такое микроконтроллеры и для чего они используются?

Несмотря на их мощную функциональную производительность, микроконтроллеры следуют по своей сути простой логике проектирования. Они собираются из зрелых, высокопроизводительных базовых электронных компонентов по стандартизированному рабочему процессу, описанному ниже:

  1. Упрощённый процессор общего назначения действует как основной вычислительный «мозг» встраиваемой системы.
  2. Производители интегрируют дополнительные периферийные устройства в соответствии с позиционированием продукта, включая различные объёмы памяти, аналого-цифровые преобразователи, аппаратные таймеры, многоканальные порты ввода/вывода общего назначения и т. д.
  3. Весь кристалл интегральной схемы помещается в стандартные корпуса для физического развёртывания.
  4. Разрабатываются лёгкие инструментальные цепочки программирования для управления МК, с низким порогом входа, доступным для большинства новичков.

На основе этого стандартизированного шаблона было выпущено бесчисленное множество вариантов микроконтроллеров, которые тихо стали невидимыми спутниками, интегрированными почти во всё современное оборудование. Их непревзойдённая простота и гибкость программирования доминируют во встраиваемом проектировании уже десятилетия. Если вы намереваетесь разработать встраиваемый продукт на основе МК, имейте в виду, что почти каждый распространённый сценарий применения уже был исследован предыдущими инженерами, которые либо предоставили готовые решения, либо завершили предварительную экспериментальную проверку.

Три ключевых преимущества способствуют широкому распространению и коммерческому успеху микроконтроллеров:

  • Полностью интегрированные периферийные схемы внутри МК могут независимо управлять широким спектром физических процессов и оборудования — как автономно, так и через внешние периферийные устройства, такие как переключатели, кнопки, датчики окружающей среды, ЖК-экраны и релейные модули. Типичные сценарии применения охватывают промышленные системы автоматизации, регулировку мощности, мониторинг температуры и настройку производительности двигателей внутреннего сгорания.
  • Сверхнизкая стоимость единицы позволяет встраивать МК в потребительские устройства, которые ранее было неэкономично автоматизировать. Благодаря этой доступности мировой рынок наводнён недорогими автоматическими машинами и всевозможными «умными» бытовыми приборами.
  • Порог программирования крайне низок. Разработчикам требуется только обычный персональный компьютер (с лёгким, простым в освоении программным обеспечением) и простой аппаратный программатор для компиляции и загрузки исполняемых двоичных файлов прошивки непосредственно в микроконтроллер.

Если вы увлечены электронной инженерией, освоение и управление аппаратной логикой микроконтроллеров — это обязательный навык.

Механизм работы микроконтроллера

Хотя существуют тысячи различных семейств микроконтроллеров и миллионы пользовательских прошивок, написанных исключительно для них, все МК имеют одинаковую базовую логику работы. Освоив рабочий процесс одной модели, вы сможете адаптироваться к большинству других вариантов. Стандартная последовательность полного жизненного цикла работы микроконтроллера выглядит следующим образом:

  1. Питание отключено, все схемы находятся в режиме ожидания. Предварительно скомпилированные двоичные файлы прошивки хранятся в энергонезависимой памяти МК, без видимых признаков предстоящего выполнения...
  2. Питание включается, и немедленно начинается высокоскоростная инициализация. Внутренний блок управления берёт полный контроль над системой, отключая все периферийные схемы, кроме генератора, во время подготовки к запуску. Этот этап инициализации длится несколько миллисекунд.
  3. Напряжение питания стабилизируется на номинальном максимуме, и генератор достигает стабильной частоты. Регистры специальных функций (SFR) инициализируются предустановленными битовыми значениями, отражающими состояние по умолчанию всех внутренних схем, а все порты ввода/вывода по умолчанию переходят в режим ввода. Весь чип начинает синхронизированную работу в такт с непрерывными импульсами, и все последующие события измеряются в микро- и наносекундах.
  4. Счётчик команд сбрасывается на адрес ноль. Машинная инструкция, хранящаяся по этому адресу памяти, выбирается и отправляется в декодер команд, который идентифицирует команду и инициирует немедленное аппаратное выполнение.
  5. Значение счётчика команд увеличивается на один адрес, и цикл выборки-декодирования-выполнения повторяется непрерывно, достигая скорости в несколько миллионов циклов в секунду.
Общая архитектурная схема микроконтроллера

Во время обычной работы микроконтроллер последовательно выбирает машинные инструкции из внутренней программной памяти. Однако, как только программируется бит защиты, внешние интерфейсы отладки и чтения памяти навсегда отключаются, что не позволяет сторонним программаторам извлечь полную двоичную прошивку. Этот механизм блокировки служит основным аппаратным барьером безопасности, но он не является неуязвимым для продвинутых методов обратного проектирования. Например, злоумышленники могут выполнить полную декапсуляцию чипа, чтобы обнажить кристалл кремния, а затем использовать оборудование с фокусированным ионным пучком для физического изменения состояния защитных перемычек, полностью разблокируя защищённый чип. После обхода блокировки злоумышленники могут дампить всю флэш-память программ и восстановить полную логику исходного кода. Несанкционированное извлечение прошивки создаёт серьёзные коммерческие риски для отраслей, полагающихся на конфиденциальные встраиваемые алгоритмы. Для смягчения таких угроз производители полупроводников внедряют многоуровневые стратегии защиты, включая зашифрованное хранение в EEPROM и датчики физического обнаружения взлома. Тем не менее, описанный выше последовательный рабочий процесс остаётся основным принципом работы каждого микроконтроллера. Понимание этого основного цикла является первым критическим шагом как для реализации надёжной защиты МК, так и для проведения легальных операций по восстановлению прошивки.

1.2 Основные внутренние модули микроконтроллера

Как показано выше, все внутренние операции МК выполняются на высоких скоростях по оптимизированной логике. Однако микроконтроллеры были бы лишены практической ценности без специализированных периферийных схем, интегрированных вместе с ядром процессора. В следующих разделах подробно разбираются функции каждого ключевого внутреннего модуля.

Постоянное запоминающее устройство (ПЗУ / Flash-память)

Постоянное запоминающее устройство (ПЗУ) — это категория энергонезависимой памяти, предназначенной для постоянного хранения исполняемой прошивки. Максимальный поддерживаемый размер программы определяется ёмкостью ПЗУ. Память ПЗУ может быть либо встроена в кристалл микроконтроллера, либо реализована как внешняя дискретная микросхема, причём у каждой конфигурации есть свои компромиссы. Внешние микросхемы ПЗУ снижают базовую стоимость МК и поддерживают гораздо больший объём программы, но потребляют несколько портов ввода/вывода для подключения шины памяти, ограничивая доступные периферийные интерфейсы. Внутреннее ПЗУ имеет меньшую максимальную ёмкость и повышает общую стоимость компонента, но сохраняет все порты ввода/вывода для подключения внешних датчиков и исполнительных устройств. Стандартная ёмкость ПЗУ варьируется от 512 байт до 64 килобайт.

Современные микроконтроллеры почти повсеместно заменяют традиционное масочное ПЗУ на flash-память, что позволяет обновлять прошивку в полевых условиях без специального заводского программатора. Эта возможность перепрограммирования одновременно создаёт новые уязвимости безопасности. Большинство МК интегрируют специальный бит защиты, который после программирования блокирует любой доступ к чтению прошивки через внешние интерфейсы программирования — это важная защита для интеллектуальной собственности. Однако этот механизм не является неразрушимым. Злоумышленники часто используют сбои питания или точное искажение тактовой частоты, чтобы обойти защиту и извлечь полный программный код. На многих высокозащищённых чипах применяются дополнительные аппаратные перемычки, которые физически разрывают цепь чтения памяти; для их взлома требуется полная декапсуляция и микрозондирование кремния. Если законные владельцы устройства потеряли исходный код, восстановление прошивки с полностью заблокированного оборудования становится почти невозможным, если только не существуют недокументированные заводские тестовые бэкдоры. Поэтому различие между разными типами памяти и анализ их встроенных функций безопасности критически важны как для разработчиков встраиваемых систем, так и для специалистов по аппаратной безопасности. Внешнее ПЗУ тривиально считывается стандартными логическими анализаторами, тогда как внутренняя flash-память требует сложных методов физического обратного проектирования для обхода встроенных уровней защиты.

Оперативное запоминающее устройство (ОЗУ)

Оперативное запоминающее устройство (ОЗУ) служит временной энергозависимой памятью для хранения данных времени выполнения и промежуточных результатов вычислений, генерируемых во время работы МК. Все данные, хранящиеся в ОЗУ, полностью стираются сразу после отключения питания. Для иллюстрации: если прошивка выполняет арифметическую операцию сложения, специальный регистр ОЗУ действует как временное хранилище для накопленной суммы. Ёмкость ОЗУ общего назначения обычно составляет несколько килобайт в основных семействах микроконтроллеров.

Несмотря на энергозависимость и невозможность сохранения данных без питания, ОЗУ остаётся ценной целью для кражи данных во время активной работы устройства. Если злоумышленник может заморозить выполнение МК и напрямую прочитать содержимое ОЗУ, он может извлечь криптографические ключи или промежуточные вычисления, временно хранящиеся в памяти. Многие защищённые микроконтроллеры имеют аппаратные блокировки, которые не позволяют внешним отладчикам обращаться к ОЗУ во время нормального выполнения программы. Если злоумышленник отключает эту блокировку с помощью аппаратного внедрения ошибок, становится возможным полное дампирование ОЗУ и анализ данных. Этот риск побуждает разработчиков защищённых встраиваемых систем применять такие контрмеры, как выполнение криптографических операций за постоянное время и автоматическое обнуление памяти для минимизации раскрытия конфиденциальных данных. В сочетании с энергонезависимой памятью EEPROM, ОЗУ содержит критические калибровочные параметры и уникальные токены безопасности, которые могут быть полностью дублированы после успешного взлома чипа. Полное восстановление системы требует анализа как прошивки ПЗУ, так и состояния ОЗУ во время выполнения, особенно когда дампы flash-памяти не дают контекста для динамической логики.

Электрически стираемое программируемое ПЗУ (EEPROM)

EEPROM — это специализированная энергонезависимая периферийная память, которая присутствует не на всех моделях микроконтроллеров. Она поддерживает чтение/запись во время активного выполнения программы (как ОЗУ) и сохраняет все данные неопределённо долго после отключения питания (как ПЗУ). Разработчики часто используют EEPROM для сохранения генерируемых во время работы параметров, таких как калибровочные смещения датчиков, коды доступа и счётчики использования, которые должны сохраняться при циклах питания. Основным ограничением EEPROM является низкая скорость записи, отдельные операции программирования занимают миллисекунды.

Как перезаписываемая энергонезависимая память, EEPROM входит в число наиболее приоритетных целей для злонамеренного обратного проектирования. Если глобальная защита МК не распространяется на область EEPROM, злоумышленники могут прочитать все хранящиеся конфигурационные данные и клонировать параметры устройства. Противники также используют функцию записи EEPROM для преднамеренного изменения хранимых значений, отключая встроенные проверки безопасности или изменяя пороговые значения производительности. Реализация битов защиты варьируется у разных производителей микроконтроллеров, и многие схемы защиты не полностью защищают блоки памяти EEPROM. Полный рабочий процесс обратного проектирования всегда включает полные дампы всей карты памяти, включая EEPROM, для восстановления полной логики встраиваемой системы. Классический реальный пример — потребительские струйные принтеры, которые хранят данные об уровне чернил в EEPROM; злоумышленники копируют данные из этой области памяти, чтобы обойти ограничения на дозаправку и обеспечить неограниченное использование чернил. Это демонстрирует как риски злонамеренного использования открытой EEPROM, так и легальные случаи восстановления утерянных конфигурационных данных устройства. Высокозащищённое встраиваемое оборудование снижает эти угрозы путём шифрования всех данных EEPROM или привязки хранимых параметров к уникальному аппаратному идентификатору чипа для предотвращения клонирования.

Полная структурная схема микроконтроллера

Регистры специальных функций (SFR)

Регистры специальных функций занимают зарезервированное адресное пространство в общей карте ОЗУ МК. Их индивидуальные функциональные назначения навсегда определены производителем полупроводников и не могут быть перенастроены разработчиками прошивок. Каждый бит внутри SFR жёстко привязан к управлению конкретным внутренним периферийным устройством — таким как аналого-цифровые преобразователи, последовательные коммуникационные модули и порты ввода/вывода общего назначения. Изменение любого битового значения напрямую изменяет состояние соответствующей внутренней схемы. Например, запись логического 0 или 1 в регистр настройки порта переключает соответствующий физический вывод между режимами ввода и вывода; каждый отдельный бит регистра управляет одним выделенным выводом чипа.

С точки зрения аппаратной безопасности, критические биты управления безопасностью часто отображаются на специальные SFR. Специальный регистр безопасности может хранить состояние бита защиты, которое включает или отключает разрешение внешнего чтения памяти. Если злоумышленник манипулирует этим SFR через программные уязвимости или аппаратные сбои, он может полностью разблокировать чип без физической декапсуляции. Дополнительные SFR управляют аппаратными интерфейсами отладки JTAG и SWD; недостаточная блокировка этих регистров позволяет внешним отладочным зондам захватывать полные дампы памяти. По этой причине защищённые загрузчики проверяют состояние SFR, связанных с безопасностью, перед выполнением пользовательского кода. В области обратного проектирования первым шагом анализа является картирование всех адресов SFR и документирование их взаимодействия с аппаратными перемычками безопасности. Запись целевых битовых значений в эти регистры может отключить защиту и обеспечить полное извлечение прошивки, что составляет основу для последующего анализа уязвимостей. Восстановление функциональности с полностью заблокированного микроконтроллера часто зависит от выявления векторов манипуляции SFR.

Счётчик команд (PC)

Счётчик команд служит основным указателем выполнения, управляющим всей работой прошивки; он хранит адрес памяти следующей машинной инструкции, запланированной для обработки. После выполнения каждой инструкции значение PC увеличивается на один адрес, что обеспечивает последовательное выполнение программы, соответствующее написанному исходному коду. Однако значение счётчика команд может быть перезаписано на любом этапе выполнения, инициируя безусловный переход на новый адрес памяти — это реализует вызовы подпрограмм и условные переходы. После завершения выполнения целевого перехода PC снова продолжает последовательное увеличение (+1, +1, +1...).

Счётчик команд является основным вектором атак с внедрением ошибок, направленных на перенаправление потока выполнения. Внося контролируемые аппаратные сбои или преднамеренное искажение битов в регистр PC, злоумышленники заставляют МК выполнять произвольный несанкционированный код, который затем может отключить блокировки безопасности или дампить всё содержимое flash-памяти. Этот метод внедрения ошибок сочетает точные скачки напряжения или сбои тактового сигнала с декапсуляцией чипа для воздействия на критические временные окна во время проверок безопасности. В исследованиях обратного проектирования документирование поведения PC при искажённых тактовых или питающих условиях помогает разрабатывать контрмеры аппаратной безопасности. Многие микроконтроллеры интегрируют сторожевой таймер, который инициирует полный сброс системы, если счётчик команд ссылается на недопустимый адрес за пределами памяти, блокируя некоторые варианты атак на основе сбоев. Если сторожевой таймер отключён в прошивке, злоумышленники могут многократно вносить сбои в регистр PC, пока не обойдут защитные блокировки и не извлекут полные двоичные файлы прошивки.

Центральный процессор (CPU)

Как следует из названия, центральный процессор контролирует и координирует все внутренние операции микроконтроллера, работая независимо от прямого вмешательства пользовательской прошивки. CPU интегрирует несколько подмодулей, три наиболее важных из которых подробно описаны ниже:

  • Декодер команд: Эта аппаратная подсхема анализирует машинные инструкции и активирует соответствующую периферийную логику управления на основе декодированных данных. Набор поддерживаемых инструкций различается для каждого семейства микроконтроллеров и определяет полную вычислительную способность чипа.
  • Арифметико-логическое устройство (АЛУ): Выполняет все математические вычисления и побитовые логические операции над хранимыми данными.
  • Аккумулятор: Специализированный регистр специальных функций, тесно связанный с работой АЛУ, выступающий в качестве выделенного рабочего пространства для всех активных данных, участвующих в арифметических или сдвиговых операциях. Он также хранит результаты вычислений для последующих этапов обработки. Дополнительный SFR, называемый словом состояния программы (PSW), работает вместе с аккумулятором, постоянно сигнализируя о состоянии хранимого числового значения — например, флаги знака и переполнения.

Основные термины двоичной системы
Бит: Фундаментальная двоичная единица, часто сбивающая с толку начинающих электронщиков. В практическом аппаратном смысле бит указывает на наличие или отсутствие напряжения на проводящей дорожке. Если напряжение достигает логической единицы, соответствующий вывод читается как логическая 1 (значение бита = 1); если проводник показывает 0 В, вывод читается как логический 0 (значение бита = 0). Теоретические определения описывают бит как одну двоичную цифру с двумя возможными значениями: 0 или 1.

CPU образует основной контур безопасности любой встраиваемой системы, и его внутренняя архитектура определяет общую уязвимость чипа. Многие процессорные архитектуры включают специализированные аппаратные отладочные цепи, которые могут быть активированы по стандартным триггерным последовательностям, предоставляя внешним зондам полный доступ для чтения внутренних областей памяти. Если производители не навсегда заблокируют эти отладочные интерфейсы с помощью перемычек, злоумышленники смогут без труда дампить всю flash-память программ. Производители полупроводников используют биты защиты для отключения путей отладки после программирования прошивки, однако неполная конфигурация перемычек оставляет CPU открытым для внешнего зондирования. Кроме того, все вычислительные операции АЛУ и аккумулятора генерируют измеримые физические побочные каналы — включая изменяющиеся паттерны энергопотребления и электромагнитное излучение. Эти сигналы утечки могут быть захвачены неинвазивно для восстановления криптографических ключей с помощью атак по анализу мощности и электромагнитного излучения, не требующих декапсуляции чипа. Поэтому защищённая встраиваемая прошивка должна учитывать как логическую защиту памяти, так и риски физических побочных каналов. Восстановление конфиденциальных ключей шифрования из заблокированных МК обычно требует комбинации нескольких методов: анализ треков питания, внедрение ошибок тактовой частоты и физическая декапсуляция для обхода встроенных блокировок и извлечения конфиденциальных хранимых данных.

Порты ввода/вывода общего назначения (I/O порты)

Микроконтроллеры реализуют практическую встраиваемую функциональность через физические соединения с внешним периферийным оборудованием. Каждый МК интегрирует несколько специализированных банков регистров, называемых портами ввода/вывода, каждый из которых непосредственно отображается на внешние выводы корпуса чипа.

Схема порта ввода/вывода общего назначения

Термин «порт ввода/вывода» происходит от двойной перенастраиваемой функциональности каждого вывода, режим работы которого может динамически переключаться в соответствии с требованиями разработчика. Эти портовые регистры уникальны среди всех внутренних ресурсов памяти МК: их логическое состояние в реальном времени можно измерить обычным вольтметром!

Порты ввода/вывода служат основным физическим интерфейсом между микроконтроллером и внешним миром, и одновременно они представляют собой значительную поверхность атаки. Например, входные выводы, оставленные в плавающем состоянии, восприимчивы к внешним помехам, которые могут генерировать преднамеренные логические сбои, искажая состояние внутренних регистров. Злоумышленники также подают повышенное напряжение на выводы I/O, чтобы повредить периферийные схемы и вызвать сбои, отключающие логику защитных блокировок. Многие микроконтроллеры используют одни и те же физические выводы как для обычной работы, так и для заводского режима программирования; если бит защиты не запрограммирован, внешние программаторы могут напрямую считывать полную flash-память через эти общие выводы. Это делает обязательным полное программирование бита защиты после загрузки прошивки для отключения несанкционированных интерфейсов программирования. В рабочих процессах извлечения прошивки пассивный перехват сигналов на активных выводах I/O во время нормальной работы устройства позволяет выявить передаваемые конфиденциальные данные, включая ключи шифрования и параметры конфигурации устройства. Комбинируя захваченные трассы связи I/O с дампами внутренней памяти, злоумышленники могут полностью воспроизвести функциональное поведение целевого встраиваемого оборудования.

Системный генератор

Структурная схема генератора

Непрерывные равномерные импульсные сигналы, генерируемые системным генератором, синхронизируют все внутренние схемы МК для работы в едином такте. Генераторы обычно используют кварцевые резонаторы или керамические резонаторы для точной стабилизации частоты, хотя также поддерживаются простые RC-генераторы без внешних резонансных компонентов для недорогих низкоточных приложений. Важная деталь: машинные инструкции выполняются не на сырой частоте генератора, а на более низкой разделённой частоте. Каждая инструкция разбивается на несколько тактовых циклов. Некоторые архитектуры МК используют фиксированное одинаковое количество циклов для всех инструкций, другие — переменное в зависимости от сложности команды. Для сравнения: система с кварцевым генератором 20 МГц не будет выполнять одну инструкцию за 50 наносекунд; реальная задержка инструкции составляет от 200 нс до 800 нс и полностью определяется конкретной архитектурой МК!

Частота генератора определяет тайминг всех внутренних операций чипа, и точное искажение тактового сигнала лежит в основе основных методов атак с внедрением ошибок. Временно сдвигая рабочую частоту или вводя узкие импульсные сбои в сигнал генератора, злоумышленники заставляют CPU неправильно декодировать инструкции или пропускать критические проверки безопасности. Этот метод позволяет разблокировать защищённые микроконтроллеры без физического изменения защитных перемычек через декапсуляцию. Кроме того, схема генератора часто генерирует повышенное напряжение программирования, необходимое для записи EEPROM; нестабильные тактовые сигналы могут инициировать непреднамеренные циклы записи, отключающие запрограммированные биты защиты. Восстановление заблокированных или полностью неработающих устройств иногда требует обхода родного генератора для перевода МК в недокументированные заводские тестовые режимы. Профессиональное оборудование для обратного проектирования включает специализированные модули генерации сбоев тактовой частоты для введения точно синхронизированных искажений сигнала в определённые точки потока выполнения прошивки. Глубокое понимание характеристик генератора необходимо как инженерам, усиливающим защиту встраиваемых систем, так и исследователям, разрабатывающим аппаратные методы эксплуатации.

Аппаратные таймеры и счётчики

Почти все встраиваемые прошивки полагаются на эти миниатюрные аппаратные секундомеры во время обычной работы. Таймеры и счётчики реализованы как специализированные 8- или 16-разрядные регистры специальных функций, значение которых автоматически увеличивается при получении каждого тактового импульса. Когда значение регистра достигает максимального предела переполнения, периферийное устройство генерирует аппаратный сигнал прерывания для CPU.

Если таймер использует внутренний кварцевый генератор в качестве источника тактов, инженеры могут точно измерить время между двумя событиями: вычесть начальное значение регистра T1 из конечного T2, чтобы получить общую измеренную длительность. Если таймер получает импульсные сигналы от внешнего физического источника, периферийное устройство перенастраивается в счётчик событий вместо измерителя времени.

Данное описание охватывает лишь основную базовую логику; реальная практическая реализация таймеров включает гораздо более сложную настраиваемую функциональность.

Обзор функций таймера/счётчика

Определение двоичного регистра
Регистр / ячейка памяти: Аппаратная схема, способная хранить один полный байт двоичных данных. Помимо 8 битов данных, доступных разработчику прошивки, каждый регистр также включает адресные биты для отображения в памяти. Два ключевых правила классификации:

  • Все ячейки памяти в ПЗУ и регистрах ОЗУ общего назначения функционально идентичны и не имеют фиксированных предопределённых меток. Разработчики могут присваивать пользовательские имена любым адресам памяти во время программирования для упрощения кода.
  • Каждый регистр специальных функций (SFR) имеет уникальную метку, присвоенную производителем, соответствующую его фиксированной аппаратной функции, причём соглашения об именах различаются в разных семействах микроконтроллеров.

Аппаратные таймеры часто используются для реализации ключевых механизмов безопасности, таких как сторожевые таймеры и логика аутентификации с ограничением по времени. Однако эти периферийные устройства также уязвимы для злонамеренного вмешательства. Например, злоумышленники, изменяющие предделитель таймера или регистры сравнения, могут расширить доступное окно для атак с внедрением сбоев или обойти блокировки безопасности, основанные на тайм-аутах. Некоторые семейства микроконтроллеров используют специальный аппаратный таймер для управления задержкой активации бита защиты после программирования; замораживание или ускорение этого таймера может помешать правильной активации бита защиты. В рамках обратного проектирования непрерывный мониторинг состояния регистров таймера позволяет определить точную временную последовательность всех критических для безопасности ветвей кода, что позволяет злоумышленникам идеально синхронизировать сигналы внедрения ошибок. Полные дампы памяти, захватывающие всю конфигурацию таймера, позволяют инженерам воспроизвести точное временное поведение исходного целевого оборудования для клонированных устройств. Восстановление прошивки в судебных целях сильно зависит от реконструкции исходных временных последовательностей таймера для обхода аппаратных блокировок безопасности.

Независимый сторожевой таймер

Сторожевой таймер подключается к полностью изолированному внутреннему RC-генератору, работающему независимо от основного источника тактовой частоты.

Когда функция сторожевого таймера включена, непрерывный невозобновляемый счёт приведёт к полному аппаратному сбросу микроконтроллера, как только таймер достигнет порога переполнения, и выполнение прошивки начнётся сначала с начального адреса. Основной принцип работы основан на структурированных периодических командах обновления, размещаемых в ключевых точках основных циклов программы.

Если разработчики вставляют специальные команды сброса сторожевого таймера через соответствующие интервалы во всех основных циклах прошивки, счётчик сторожевого таймера никогда не достигнет переполнения, и нормальное выполнение программы продолжается без помех.

В случае неожиданных ошибок во время выполнения — чаще всего из-за электрических помех в промышленных встраиваемых средах — счётчик команд может зависнуть на недопустимом адресе памяти без возможности выхода. Без регулярных сигналов обновления сторожевого таймера значение счётчика продолжает увеличиваться до переполнения, автоматически инициируя полный сброс чипа для восстановления стабильной работы!

Сторожевой таймер является важным средством обеспечения надёжности системы, но он создаёт препятствия для злоумышленников, занимающихся обратным проектированием. Любая попытка приостановить выполнение МК для зондирования памяти вызовет аппаратный сброс по сторожевому таймеру, препятствуя стабильному полному считыванию памяти. Тем не менее, злоумышленники могут обойти это ограничение, либо точно синхронизируя внедрение ошибок во избежание переполнения сторожевого таймера, либо используя программные уязвимости для полного отключения сторожевого таймера, что открывает доступ к полному дампированию памяти. Высокозащищённые варианты микроконтроллеров имеют биты защиты, которые блокируют команды отключения сторожевого таймера через прошивку, добавляя дополнительный аппаратный барьер. Во время атак по извлечению прошивки злоумышленники могут вносить сбои тактовой частоты, чтобы намеренно пропустить критические инструкции обновления сторожевого таймера, инициируя контролируемый аппаратный сброс, который предоставляет временный доступ к недокументированным режимам загрузчика. Успешное судебное восстановление чипа требует всестороннего анализа временных характеристик сторожевого таймера, чтобы избежать непреднамеренных сбросов, мешающих захвату памяти.

Схемы управления питанием на кристалле

Два критических модуля, связанных с питанием, интегрированы в подсистемы питания микроконтроллера:

Схема детектора пониженного напряжения

Детектор пониженного напряжения (BOD): Опасное состояние во время циклов отключения питания или устойчивого падения напряжения питания, вызванного электрическими помехами. Различные внутренние периферийные схемы МК работают при разных минимальных порогах напряжения; нестабильные уровни питания приводят к неопределённому, неконтролируемому поведению чипа. Для снижения этого риска большинство микроконтроллеров интегрируют встроенный аппаратный сброс при пониженном напряжении, который мгновенно инициирует полный сброс системы, как только напряжение питания падает ниже заданного безопасного порога.

Вывод сброса Master Clear (MCLR): Специализированный внешний вывод для ручного полного сброса чипа, активируемый подачей либо логической единицы, либо логического нуля в зависимости от архитектуры МК. Если микроконтроллер не имеет встроенной схемы детектора пониженного напряжения, разработчики могут подключить внешнюю дискретную схему сброса к этому выводу MCLR для воспроизведения защитной функциональности.

Манипуляции с питанием представляют собой один из наиболее распространённых векторов атак с внедрением ошибок для обхода битов защиты МК. Кратковременные скачки пониженного или повышенного напряжения искажают внутреннюю логику, заставляя CPU выполнять недопустимые последовательности инструкций, отключающие защитные барьеры. Хотя встроенные схемы детектора пониженного напряжения инициируют автоматический сброс при длительных низких напряжениях, сверхбыстрые переходные скачки напряжения могут обойти обнаружение и позволить успешно обойти защиту. Кроме того, вывод сброса MCLR также служит триггером для входа в заводской режим программирования; незащищённые выводы сброса позволяют злоумышленникам принудительно сбрасывать чип и инициировать чтение памяти до полной активации бита защиты после загрузки. Для продвинутых физических атак полная декапсуляция чипа предоставляет прямой доступ зондов к внутренним шинам питания, что позволяет проводить целенаправленное изменение напряжения на цепях защитных перемычек. Легальное судебное восстановление прошивки часто relies на точные контролируемые скачки питания для индукции предсказуемых аппаратных сбоев, которые навсегда отключают защиту чтения памяти.

Периферийные устройства последовательной связи

Схема последовательного интерфейса

Параллельная передача данных через порты ввода/вывода общего назначения обеспечивает оптимальную производительность для связи на короткие расстояния до нескольких метров. Для обмена данными между устройствами на больших расстояниях параллельная проводка становится непрактичной, поэтому последовательная связь является предпочтительным отраслевым решением.

Почти все современные микроконтроллеры интегрируют несколько специализированных аппаратных периферийных устройств последовательной связи в качестве стандартных встроенных модулей. Выбор подходящего последовательного протокола зависит от четырёх основных критериев проектирования:

  • Общее количество внешних устройств, требующих двунаправленного обмена данными с МК
  • Обязательная пропускная способность передачи данных и требования к задержке
  • Физическое расстояние между узлами связи
  • Требования к поддержке одновременной полнодуплексной передачи и приёма

Фундаментальным требованием для надёжной последовательной передачи данных является строгое соблюдение стандартизированного протокола связи: формального набора правил синхронизации и кадрирования данных, обеспечивающих правильную интерпретацию принимающими устройствами передаваемых двоичных потоков данных. Аппаратные периферийные устройства МК автоматизируют всю низкоуровневую логику протокола, сводя работу разработчика к простым операциям записи в регистры для исходящих данных и чтения регистров для захваченных входящих данных.

Термины байт и бит
Байт: Стандартная единица данных, состоящая из 8 сгруппированных двоичных битов. Если один бит представляет собой одну двоичную цифру, то байт функционирует как 8-разрядное двоичное число, способное выполнять все стандартные арифметические вычисления в АЛУ. Отдельные биты внутри байта имеют неравный числовой вес: крайний левый бит старшего разряда имеет максимальное значение и называется старшим значащим битом (MSB). Крайний правый бит младшего разряда имеет минимальный вес и называется младшим значащим битом (LSB). Восемь двоичных битов образуют 256 уникальных комбинаций, поддерживая десятичное представление чисел от 0 до 255 включительно.

Последовательные интерфейсы, такие как UART, SPI и I2C, служат двойной цели: обычный обмен данными с периферией и специализированное заводское программирование. Если бит защиты не запрограммирован, злоумышленники используют эти последовательные шины для извлечения полных двоичных файлов прошивки из встроенной flash-памяти. Даже полностью заблокированные микроконтроллеры остаются уязвимыми для атак по побочным каналам на трафик последовательной передачи, если используются незашифрованные протоколы связи. Стандартные рабочие процессы обратного проектирования начинаются с пассивного мониторинга линий последовательной шины для обратного проектирования проприетарных протоколов, а затем вводятся пользовательские команды для активации недокументированных тестовых режимов, отключающих блокировки чтения памяти. Многие устаревшие семейства микроконтроллеров содержат скрытые заводские тестовые последовательности, активируемые передачей определённой байтовой комбинации через периферийное устройство UART. После разблокировки через этот последовательный бэкдор становится возможным полное дампирование flash-памяти без разрушительной декапсуляции чипа. Восстановление прошивки с устаревшего встраиваемого оборудования часто полностью зависит от обнаружения этих недокументированных последовательных команд для неинвазивного извлечения проприетарного двоичного кода.

Основы программирования прошивки

В отличие от аналоговых интегральных схем, которые требуют только подключения внешних компонентов и подачи питания для работы, микроконтроллеры требуют предварительного программирования прошивки перед развёртыванием. Это требование представляет собой значительный барьер, отпугивающий многих разработчиков «чистого» аппаратного обеспечения от использования проектов на основе МК. Кажущаяся сложность разработки прошивки создаёт ненужные задержки, поскольку реальный рабочий процесс программирования микроконтроллеров следует интуитивно понятной логике.

Несколько языков программирования низкого уровня поддерживают разработку прошивок для микроконтроллеров, включая ассемблер, стандартный C и встраиваемый BASIC с их соответствующими компиляторами. Разработка прошивки просто требует написания последовательных машинных инструкций в порядке желаемого потока выполнения. Обширная экосистема интегрированных сред разработки (IDE) для Windows упрощает рабочие процессы с помощью графической отладки и инструментов визуализации памяти.

Этот учебник отдаёт предпочтение языку ассемблера из-за его минимальных вычислительных накладных расходов, максимальной скорости выполнения и полного детального контроля над каждым внутренним аппаратным сигналом микроконтроллера.

Графика для начинающих по встраиваемому программированию
Прерывание — Аппаратное обеспечение микроконтроллера работает на порядки быстрее, чем большинство физических внешних процессов, которые оно контролирует, оставляя CPU простаивающим большую часть времени в ожидании внешних событий. Постоянный непрерывный опрос входных выводов и регистров состояния потребляет значительные вычислительные ресурсы, поэтому специализированные аппаратные сигналы прерываний уведомляют CPU о возникновении важных внешних событий. Как следует из названия, прерывание приостанавливает последовательное выполнение программы для обслуживания вызвавшего события. Сигналы прерываний поступают от множества внутренних и внешних периферийных источников; при обнаружении МК приостанавливает текущую обработку для идентификации корневого триггера. Если требуется логика обслуживания, текущий адрес счётчика команд помещается в стек, и выполняется специализированная подпрограмма обслуживания прерывания для обработки события.


Стек — Зарезервированный сегмент ОЗУ, используемый для временного хранения адресов возврата счётчика команд при каждом прерывании или вызове подпрограммы. Этот сохранённый адрес позволяет МК возобновить исходный последовательный поток прошивки после завершения обработки прерывания или подпрограммы. Стек освобождается автоматически после возврата к исходному адресу, освобождая этот слот памяти для последующих операций стека. Многоуровневая глубина стека поддерживает вложенные вызовы подпрограмм, позволяя разработчикам вызывать вторичные подпрограммы из основной логики.

Руководство по программированию микроконтроллеров для начинающих

Скомпилированный двоичный файл прошивки является наиболее коммерчески ценным активом любой встраиваемой системы, поэтому предотвращение несанкционированного чтения памяти является основным приоритетом аппаратного проектирования. Биты защиты составляют основной оборонительный барьер против кражи прошивки, однако эти механизмы содержат уязвимости, которыми можно воспользоваться. Злоумышленники разработали обширный набор методов эксплуатации для обхода встроенных блокировок, начиная от программных логических атак и заканчивая разрушительной физической декапсуляцией чипа. После успешного полного извлечения прошивки злоумышленники проводят глубокий статический анализ для выявления уязвимостей кода или массового производства клонированных поддельных устройств с идентичной проприетарной функциональностью. По этой причине производители коммерческого оборудования активно инвестируют в обфускацию двоичного кода и шифрование встроенной памяти для усложнения обратного проектирования. Вся зашифрованная прошивка должна быть расшифрована на определённом этапе выполнения, создавая узкое временное окно, в котором незашифрованный открытый код подвержен атакам по побочным каналам. Легальное судебное восстановление прошивки с заблокированных микроконтроллеров иногда возможно через анализ остаточных данных flash-памяти, особенно если бит защиты никогда не был правильно запрограммирован при производстве. Дополнительные пути восстановления используют уязвимости кода загрузчика для отключения защитных блокировок и выполнения полного дампирования flash-памяти для полного двоичного анализа. В конечном счёте, комплексная безопасность встраиваемых систем опирается на многоуровневую стратегию защиты, сочетающую аппаратные перемычки, безопасные стандарты кодирования и регулярные циклы обновления прошивки для устранения вновь обнаруженных недостатков безопасности. Эта вводная глава закладывает фундаментальную теоретическую основу для всех последующих тем по аппаратному обеспечению и анализу безопасности, предоставляя читателям базовые знания для разработки либо надёжных схем защиты от обратного проектирования, либо для проведения легальных судебных операций по восстановлению прошивки при необходимости.

 

  • Список МК Atmel 8051 для обратного проектирования от Mikatech:
  • Взлом всей серии AT89xx: AT89C51 AT89C52 AT89S52 AT89S53 AT89S54 AT89S58 AT89S64 AT89C1051 AT89C2051 AT89C4051 AT89C55 AT89C55WD AT89C5131A AT89C51WD AT89C51ED2 AT89C51CC01 AT89S51 AT89C51CC02 AT89C51CC03 AT89C51RB2 AT89C51RC AT89C51RD2 AT89C51RD-CM AT89C51RC2 AT89C51ID2 AT87C5101 AT89C1051U AT89C2051X2 AT89C5130AM AT89C5130A AT89C5131AL AT89C5131AM AT89C51AC3 AT89C5132 AT89C51AC2 AT89C51CC03C AT89C51SND1C AT89C51CC03U AT89C51IC2 AT89C51RE2 AT89C51SND2 AT89LP2051 AT89LP2052 AT89LP213 AT89LP214 AT89LP216 AT89LP4051 AT89LP4052 AT89LP828 AT89LP428 AT89LS51 AT89LS52 AT89LV51 AT89LS53 AT89LS8252 AT89LV52 AT89LV55 AT89S2051 AT89S4051 AT89S8252 AT89S8253 ...

  • Взлом всей серии AT90xx: AT90S1200 AT90S2323 AT90S2343 AT90S2331 AT90S4433 AT90S8515 AT90S8535 AT90S4414 AT90S4434 AT90S2313 90S1200 90S2323 90S2343 90S2331 90S4433 90S8515 90S8535 90S4414 90S4434 90S2313 ...

  • Чтение всей серии AT90CAN/PWM/USB/xx: AT90CAN32 AT90CAN64 AT90CAN128 AT90PWM2 AT90PWM216 AT90PWM2B AT90PWM3 AT90PWM316 AT90PWM3B AT90USB1286 AT90USB1287 AT90USB162 AT90USB646 AT90USB647 AT90USB82 ...
  • Взлом прошивки всей серии AT91SAMxx: AT91SAM9XE512 AT91SAM9XE256 AT91SAM9XE128 AT91SAM7S64B AT91SAM7S32B AT91SAM7SE512 AT91SAM7SE256 AT91SAM7SE32 AT91SAM7XC512 AT91SAM7XC256 AT91SAM7XC128 AT91SAM7X512 AT91SAM7X256 AT91SAM7X128 AT91SAM7S161 AT91SAM7S512 AT91SAM7S256 AT91SAM7S128 AT91SAM7S64 AT91SAM7S321 ...

  • Взлом прошивки всей серии ATTinyxx: ATtiny4 ATtiny5 ATtiny10 ATtiny11 ATtiny12 ATtiny13 ATtiny15 ATtiny20 ATtiny22 ATtiny24 ATtiny25 ATtiny26 ATtiny261 ATtiny28 ATtiny2313 ATtiny40 ATtiny4313 ATtiny43 ATtiny44 ATtiny45 ATtiny461 ATtiny48 ATtiny84 ATtiny85 ATtiny861 ATtiny87 ATtiny88 ATtiny4A ATtiny5A ATtiny10A ATtiny11A ATtiny12A ATtiny13A ATtiny15A ATtiny20A ATtiny22A ATtiny24A ATtiny25A ATtiny26A ATtiny261A ATtiny28A ATtiny2313A ATtiny40A ATtiny4313A ATtiny43A ATtiny44A ATtiny45A ATtiny461A ATtiny48A ATtiny84A ATtiny85A ATtiny861A ATtiny87A ATtiny88A ATtiny4V ATtiny5V ATtiny10V ATtiny11V ATtiny12V ATtiny13V ATtiny15V ATtiny20V ATtiny22V ATtiny24V ATtiny25V ATtiny26V ATtiny261V ATtiny28V ATtiny2313V ATtiny40V ATtiny4313V ATtiny43V ATtiny44V ATtiny45V ATtiny461V ATtiny48V ATtiny84V ATtiny85V ATtiny861V ATtiny87V ATtiny88V ...

  • Взлом всей серии ATMegaxx: ATmega16 ATmega162 ATmega164 ATmega165 ATmega168 ATmega169 ATmega128 ATmega1280 ATmega1281 ATmega2560 ATmega2561 ATmega328 ATmega48 ATmega32 ATmega324 ATmega325 ATmega3250 ATmega329 ATmega3290 ATmega64 ATmega640 ATmega645 ATmega6450 ATmega649 ATmega6490 ATmega8 ATmega88 ATmega8515 ATmega8535 ATmega16L ATmega162L ATmega164L ATmega165L ATmega168L ATmega169L ATmega128L ATmega1280L ATmega1281L ATmega2560L ATmega2561L ATmega328L ATmega48L ATmega32L ATmega324L ATmega325L ATmega3250L ATmega329L ATmega3290L ATmega64L ATmega640L ATmega645L ATmega6450L ATmega649L ATmega6490L ATmega8L ATmega88L ATmega8515L ATmega8535L ATmega16P ATmega162P ATmega164P ATmega165P ATmega168P ATmega169P ATmega128P ATmega1280P ATmega1281P ATmega2560P ATmega2561P ATmega328P ATmega48P ATmega32P ATmega324P ATmega325P ATmega3250P ATmega329P ATmega3290P ATmega64P ATmega640P ATmega645P ATmega6450P ATmega649P ATmega6490P ATmega8P ATmega88P ATmega16A ATmega162A ATmega164A ATmega165A ATmega168A ATmega169A ATmega128A ATmega1280A ATmega1281A ATmega2560A ATmega2561A ATmega328A ATmega48A ATmega32A ATmega324A ATmega325A ATmega3250A ATmega329A ATmega3290A ATmega64A ATmega640A ATmega645A ATmega6450A ATmega649A ATmega6490A ATmega8A ATmega88A ATmega8515A ATmega8535A ...

  • Взлом серии ATFxx: ATF16V8B ATF16V8BL ATF16V8BQ ATF16V8BQL ATF16LV8C ATF16LV8CEXT ATF16V8C ATF16V8CEXT ATF16V8CZ ATF20V8B ATF20V8BL ATF20V8BQ ATF20V8BQL ATF22LV10C ATF22LV10CEXT ATF22LV10CUES ATF22LV10CZ ATF22LV10CQZ ATV22V10 ATF22V10B ATF22V10BQ ATF22V10BL ATF22V10BQL ATF22V10C ATF22V10CEXT ATF22V10CUES ATF22V10CZ ATF22V10CQZ ATF22V10CZUES ATF22V10CQZUES ATF1500A ATF1500ABV ATF1500ABVL ATF1500 ATF1500L ATF1502AS ATF1502ASL ATF1502ASV ATF1502ASVL ATF1504AS ATF1504ASVL ATF1508 ATF1508AS ATF1508ASV ATF2500C ATF2500CL ATF2500CQ ATF2500CQL ATF750C ATF750CEXT ATF750CL ATF750LVC ATF750LVCCEXT ATF750LVCEXT ATF750LVCL ATV2500 ATV2500H ATV2500L ATV2500B ATV2500BL ATV2500BQL ATV5000 ATV5000L ATV750 ATV750B ATV750BL ATV750L ...

  • Взлом серии AT88scxx/90scxx: AT88SC0104 AT88SC0104C AT88SC0204 AT88SC0204C AT88SC0404 AT88SC0404C AT88SC0808 AT88SC0808C AT88SC1003 AT88SC101 AT88SC102 AT88SC1281 AT88SC12816C AT88SC150 AT88SC153 ...

Общие вопросы об извлечении прошивок микроконтроллеров


  • Безопасно ли отправлять платёж в MikaTech?

    Если бы MikaTech была недобросовестной компанией, в Интернете можно было бы найти множество плохих отзывов о её услугах за 28 лет истории

    Итак, ответ — ДА! Мы хорошие люди.

    Почему выбирают Mikatech, нажмите здесь, чтобы узнать


  • Может ли Mikatech взламывать микросхемы, не указанные на этом сайте?

    У разных производителей микросхем разные номера деталей, но внутреннее ядро микросхемы может быть выполнено по одной и той же технологии, поэтому перечислить все номера деталей, к которым применима наша технология, практически невозможно, например MYSON, STK, FEELING, ANALOG, FUJITSU, NOVATEK, LG/HYNDAI.

    Кроме того, с развитием технологий мы ежедневно приобретаем всё больше опыта и разрабатываем новые методы обратного проектирования для различных интегральных схем. Полный список номеров деталей интегральных схем, входящих в нашу компетенцию, постоянно растёт, пожалуйста, свяжитесь с нами, чтобы узнать подробности.

  • Будет ли защищена моя конфиденциальность?

    Mikatech Innovative Limited понимает важность конфиденциальности своих клиентов. В момент обращения в Mikatech ваша личная информация будет защищена в соответствии с нашими внутренними регламентами, разработанными за годы практики. Mikatech использует эту информацию для настройки своих услуг под вас и никогда не раскрывает её третьим лицам по какой-либо причине.
    По каждому проекту мы удаляем все данные, материалы и коды через 60 дней после передачи файлов — это защищает нас и вашу конфиденциальность.

  • Законно ли пользоваться услугами Mikatech?

    Да, это полностью законно.
    Mikatech предоставляет свои услуги по обратному проектированию только в образовательных целях. Использование вышеуказанных услуг может быть незаконным в некоторых странах или регионах, пожалуйста, ознакомьтесь с местными законами. Mikatech не несёт ответственности за использование вышеуказанных услуг, которое может быть признано незаконным.


  • Я отправил вам письмо, почему нет ответа?

    • A. Наш почтовый сервер временно вышел из строя, ваше сообщение не было доставлено в наш почтовый ящик, даже если на экране отображается сообщение об успешной отправке, пожалуйста, свяжитесь с нами снова.
    • B. Наше письмо распознаётся вашим почтовым сервером как спам, поэтому наш ответ был отклонён вашим сервером или перенаправлен в папку со спамом. Пожалуйста, удалите наш адрес из списка спама или проверьте папку со спамом, или используйте другой почтовый аккаунт, например Gmail.
    • C. Ваше письмо распознаётся нашим почтовым сервером как спам, поэтому оно было помещено в папку со спамом. Пожалуйста, используйте другой почтовый аккаунт для связи.



    Услуги по разблокировке МК


    время взлома МК

    Лет

    28 +
    страны взлома МК

    Стран

    110 +
    клиенты по взлому МК

    Клиентов

    5000 +
    проекты по взлому МК

    Проектов

    60000 +