Обратная разработка MCU

Разблокировка микроконтроллеров — MikaTech

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

О компании MikaTech

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

подпись Питер Ли Соучредитель и генеральный директор

Как декомпилировать программу микросхемы - Загрузка дизассемблера Atmel AVR

Декомпилятор двоичного кода

Декомпилятор DCC: проектирование, реализация, анализ и расширенный технический обзор

1. Обзор декомпилятора DCC

Декомпилятор DCC является пионерским инструментом двоичной декомпиляции, разработанным для преобразования исполняемых двоичных файлов DOS для Intel i386 в читаемый код на языке C. Он был создан Кристиной Сифуэнтес в рамках её докторской исследовательской программы, проводимой в период с 1991 по 1994 год в Технологическом университете Квинсленда (QUT) в Австралии. Весь исследовательский проект курировал профессор Джон Гоф, который руководил теоретической основой и структурным проектированием системы обратной компиляции. Майк Ван Эммерик, ещё один ключевой участник, работавший в QUT на этапе разработки, создал модули распознавания библиотечных сигнатур, которые остаются ключевым функциональным компонентом цепочки инструментов DCC и сегодня. Полный пакет DCC распространяется под лицензией GNU General Public License (GPL) с открытым исходным кодом, что позволяет проводить академические исследования и некоммерческие модификации мировому сообществу специалистов по обратной разработке.

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

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

2. Основные функциональные характеристики DCC

DCC специально разработан для обработки 16-битных и 32-битных исполняемых файлов .exe, скомпилированных для среды выполнения Intel i386 DOS. Его основной вывод — структурированный, синтаксически корректный исходный код на C, реконструирующий высокоуровневую логику входного двоичного файла. Когда некоторые низкоуровневые ассемблерные подпрограммы не могут быть абстрагированы в стандартный синтаксис C из-за архитектурных ограничений или отсутствия контекстных метаданных, DCC встраивает блоки встроенного ассемблера непосредственно в генерируемый код C для точного сохранения поведения исходной программы. Этот гибридный формат вывода балансирует читаемость высокоуровневой логики и функциональную точность для аппаратно-зависимых низкоуровневых операций.

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

Крайне важно понимать ключевое функциональное ограничение оригинального набора инструментов DCC. Декомпилятор способен генерировать только стандартный исходный код ANSI C в качестве конечного вывода. Он не поддерживает объектно-ориентированный синтаксис, структуры классов, полиморфизм или любые другие функции, специфичные для C++. Даже более поздняя экспериментальная объектно-ориентированная сборка DCC включает только внутренние улучшения OOP-фреймворка для самого движка и не может генерировать нативные выходные файлы C++ из входных исполняемых файлов. Это ограничение было преднамеренным во время разработки, поскольку диссертационное исследование было сосредоточено исключительно на декомпиляции процедурных языков, а не на рабочих процессах объектно-ориентированной бинарной реконструкции.

Внутренняя архитектура DCC повторяет классическую трёхэтапную структуру традиционного оптимизирующего компилятора, работая в обратном порядке для достижения декомпиляции. Фронтальная часть действует как машинно-зависимый модуль синтаксического анализа, который считывает необработанный машинный код i386, декодирует семантику команд и преобразует платформенно-специфичные двоичные данные в нейтральное промежуточное представление программы. Средний слой, официально названный Универсальной декомпилирующей машиной (UDM), работает независимо от аппаратных архитектур и целевых языков программирования. Он выполняет анализ потоков данных, реструктуризацию управления потоком и устранение избыточных инструкций для преобразования низкоуровневого промежуточного кода в семантически богатые высокоуровневые структуры программы. Конечный внутренний модуль зависит от языка и преобразует уточнённое промежуточное представление в отформатированные, читаемые файлы исходного кода C для просмотра и перекомпиляции конечным пользователем.

В реальных сценариях развёртывания DCC никогда не работает как автономный исполняемый файл. Набор вспомогательных инструментов работает вместе с основным двоичным файлом декомпилятора для улучшения качества и читаемости вывода. Эти вспомогательные программы сканируют входные двоичные файлы для идентификации уникальных отпечатков компилятора и сигнатур стандартных библиотечных функций. После распознавания статические стартовые заглушки, вставленные исходным компилятором, и предварительно связанные библиотечные подпрограммы автоматически исключаются из основного анализа декомпиляции. Этот процесс фильтрации удаляет шаблонный ассемблерный код из финального вывода C, позволяя аналитикам сосредоточиться исключительно на пользовательской логике, реализованной разработчиком программного обеспечения.

Распознавание сигнатур является одним из наиболее значимых этапов постобработки во всём рабочем процессе DCC. Без точного сопоставления сигнатур генерируемый код C был бы загромождён тысячами строк повторяющегося, неинформативного ассемблера библиотек времени выполнения, скрывающего уникальную программную логику. База данных сигнатур была специально обучена для двоичных форматов эпохи DOS, в которых отсутствуют динамические фреймворки общих библиотек, характерные для современных операционных систем. Это делает статическое сопоставление сигнатур незаменимым для очистки результатов декомпиляции устаревших 16-битных двоичных файлов.

Многие начинающие специалисты по обратной разработке путают декомпиляторы, такие как DCC, с базовыми дизассемблерами. Дизассемблер только переводит двоичные коды операций в читаемые ассемблерные мнемоники без анализа структуры программы или семантики.

  • Список микроконтроллеров Freescale/Motorola для обратной разработки в Mikatech:
  • Серия HC908: обратная разработка MCU: HC908AB32 HC908AP8 HC908AP16 HC908AP32 HC908AP64 HC908AZ60 HC908JK1 HC908JK3 HC908JK8 HC908JK32 HC908JW16 HC908JW32 HC908LK24 HC908MR8 HC908GR8 HC908QT1 HC908QT2 HC908QT4 HC908QY1 HC908QY2 HC908QY4 HC908RF2 HC908RK2 ...

    Серия MC908: обратная разработка MCU: MC908AB32 MC908AP8 MC908AP16 MC908AP32 MC908AP48 MC908AP64 MC908AS32 MC908AS60 MC908AZ32 MC908AZ60 MC908BD48 MC908EY8 MC908EY16 MC908GR16 MC908GR32 MC908GR48 MC908GR60 MC908GZ16 MC908GZ32 MC908GZ48 MC908GZ60 MC908GP8 MC908GP16 MC908GP32 MC908GR4 MC908GR8 MC908GR16 MC908GR32 MC908GR48 MC908GR60 MC908GT8 MC908GT16 MC908GZ8 MC908GZ16 MC908GZ32 MC908GZ48 MC908JL3 MC908JL8 MC908JL16 MC908JB8 MC908JB12 MC908JB16 MC908JK1 MC908JK3 MC908JL3 MC908JL8 MC908JL16 MC908JW16 MC908KX2 MC908KX8 MC908KK3 MC908KL3 MC908LB8 MC908LD64 MC908LJ12 MC908LJ24 MC908LK24 MC908LB8 MC908LJ8 MC908LJ12 MC908LJ24 MC908LK24 MC908LV8 MC908MR8 MC908MR16 MC908MR32 MC908QB4 MC908QB8 MC908QC4 MC908QC8 MC908QC16 MC908QF4 MC908QL2 MC908QL3 MC908QL4 MC908QL8 MC908QL16 MC908QT1 MC908QT2 MC908QT4 MC908QY1 MC908QY2 MC908QY4 MC908QY8 MC908RF2 MC908SR12 ...

    Серия MC68HC05: обратная разработка MCU: MC68HC05B6 MC68HC05B8 MC68HC05B16 MC68HC05B32 MC68HC05BD3 MC68HC05BD5 MC68HC05BD7 MC68HC05BD24 MC68HC05BD32 MC68HC05C0 MC68HC05C2 MC68HC05C4 MC68HC05C8 MC68HC05C9 MC68HC05C12 MC68HC05CC MC68HC05CJ4 MC68HC05CL1 MC68HC05CL4 MC68HC05D9 MC68HC05D32 MC68HC05E0 MC68HC05E5 MC68HC05E6 MC68HC05F4 MC68HC05F8 MC68HC05F12 MC68HC05F24 MC68HC05G3 MC68HC05G6 MC68HC05H12FN MC68HC05J1 MC68HC05J3 MC68HC05J5 MC68HC05JB3 MC68HC05JB4 MC68HC05JJ6 MC68HC05JP6 MC68HC05L0 MC68HC05L1 MC68HC05L5 MC68HC05L9 MC68HC05L13 MC68HC05L14 MC68HC05L16 MC68HC05L21 MC68HC05L24 MC68HC05L25 MC68HC05L27 MC68HC05L28 MC68HC05LJ5P MC68HC05LM1FT MC68HC05LM2FT MC68HC05P1 MC68HC05P3 MC68HC05P4 MC68HC05P6 MC68HC05P8 MC68HC05P9 MC68HC05P18 MC68HC05PD6 MC68HC05PGPV MC68HC05PV8 MC68HC05SR3 MC68HC05K0 MC68HC05K1 MC68HC05K3 MC68HC05RC4 MC68HC05R9 MC68HC05R18 MC68HC05SU3 MC68HC05T1 MC68HC05TBFN MC68HC05V12FN MC68HC05X16FU MC68HC05X32FU ...

    Серия MC68HC705: обратная разработка MCU: MC68HC705B16 MC68HC705C4 MC68HC705C8 MC68HC705C9 MC68HC705CCVFB MC68HC705CJ4 MC68HC705CL4 MC68HC705CT4 MC68HC705J1 MC68HC705J2 MC68HC705J5 MC68HC705JB2 MC68HC705JB4 MC68HC705JJ7 MC68HC705JP7 MC68HC705K1 MC68HC705KJ1CDW MC68HC705L5 MC68HC705L13 MC68HC705L16 MC68HC705L26 MC68HC705L32 MC68HC705MC4 MC68HC705P6 MC68HC705P9 MC68HC705PL4 MC68HC705SR3 MC68HC705SB7 MC68HC705SJ7 MC68HC705SP7 MC68HC705SR3 MC68HC705T10 MC68HC705T16 68HC705X32 MC68HC705Y4CFU MC68HC705E1 MC68HC705E5 MC68HC705E6 MC68HC705G1 MC68HC705G4 MC68HC705G6 ...

    Серия MC68HC11: обратная разработка MCU: MC68HC11A0 MC68HC11A1 MC68HC11A8 MC68HC11C0 MC68HC11L0 MC68HC11L1 MC68HC11L2 MC68HC11M2 MC68HC11D0 MC68HC11D3 MC68HC11E0 MC68HC11E1 MC68HC11E8 MC68HC11E9 MC68HC11E18 MC68HC11E20 MC68HC11EA9 MC68HC11ED0 MC68HC11EVBU2 MC68HC11F1 MC68HC11FC0 MC68HC11FL0 MC68HC11G5FN1 MC68HC11GA2VFUW MC68HC11K0 MC68HC11K1 MC68HC11K4 MC68HC11KA0 MC68HC11KA1 MC68HC11KA2 MC68HC11KA4 MC68HC11KG4 MC68HC11KS0 MC68HC11KS1 MC68HC11KS2 MC68HC11KS4 MC68HC11P1 MC68HC11PB8 MC68HC11PH8 MC68HC11PL2 MC68HC11PS6FG MC68HC11SA2CFGE ...

    Серия MC68HC711: обратная разработка MCU: MC68HC711D3 MC68HC711E9 MC68HC711E20 MCMC68HC711M2 MCMC68HC711MA8 MC68HC711K4 MC68HC711KA2 MC68HC711KS2 MC68HC711KS8 MCMC68HC711L6 MCMC68HC711P2 MCMC68HC711SA2FG MCMC68HC711FA2 ...

    Серия MC68HC08: обратная разработка MCU: MC68HC08AB16A MC68HC08AB32 MC68HC08AS32 68HC08AS32A MC68HC08AZ16 MC68HC08AZ24 MC68HC08AZ32 MC68HC08AZ48 MC68HC08AZ60 MC68HC08BD24 MC68HC08GP8 MC68HC08GP16 MC68HC08GP32 MC68HC08JB1 MC68HC08JB8 MC68HC08JB16 MC68HC08JT8 MC68HC08JK3 MC68HC08JK8 MC68HC08JL3 MC68HC08JL8 MC68HC08JL12 MC68HC08KH12 MC68HC08KX8 MC68HC08LD MC68HC08LT8 MC68HC08LK ...

    Серия MC68HC908: обратная разработка MCU: MC68HC908AP64 MC68HC908AP32 MC68HC908AP16 MC68HC908AP8 MC68HC908AS32A MC68HC908AZ60A MC68HC908AS60A MC68HC908AZ60E MC68HC908AS60 MC68HC908BD48 MC68HC908EY16A MC68HC908EY8A MC68HC908GR4 MC68HC908GR8 MC68HC908GR16 MC68HC908GT8 MC68HC908GT16 MC68HC908GZ8 MC68HC908GZ16 MC68HC908GZ48 MC68HC908GZ60 MC68HC908JB8 MC68HC908JB16 MC68HC908JG16 MC68HC908JK1 MC68HC908JK3 MC68HC908JK8 MC68HC908JL3 MC68HC908JL8 MC68HC908KK3 MC68HC908KL3 MC68HC908KL8 MC68HC908KX2 MC68HC908KX8 MC68HC908LD60 MC68HC908LD64 MC68HC908LJ8 MC68HC908LJ12 MC68HC908LK24 MC68HC908LV8 MC68HC908MR8 MC68HC908MR16 MC68HC908MR32 MC68HC08QA12 MC68HC08QP32 MC68HC08QT4 MC68HC08QY4 MC68HC908QY2 MC68HC908QY4 MC68HC908SR12 MC68HC08SR12 MC68HC908SR12 ...

    Серия MC9S08: обратная разработка MCU: MC9S08AC8 MC9S08AC16 MC9S08AC32 MC9S08AC48 MC9S08AC60 MC9S08AC96 MC9S08AC128 MC9S08AW16 MC9S08AW32 MC9S08AW48 MC9S08AW60 MC9S08DN16 MC9S08DN32 MC9S08DN48 MC9S08DN60 MC9S08DV16 MC9S08DV32 MC9S08DV48 MC9S08DV60 MC9S08DV96 MC9S08DV128 MC9S08DZ16 MC9S08DZ32 MC9S08DZ48 MC9S08DZ60 MC9S08DZ96 MC9S08DZ128 MC9S08EL16 MC9S08EL32 MC9S08FL8 MC9S08FL16 MC9S08GB16 MC9S08GB32 MC9S08GB60 MC9S08GT8 MC9S08GT16 MC9S08GT32 MC9S08GT60 MC9S08JE128 MC9S08JE64 MC9S08JM8 MC9S08JM16 MC9S08JM32 MC9S08JM60 MC9S08JS8 MC9S08JS16 MC9S08LG16 MC9S08LG32 MC9S08LL8 MC9S08LL16 MC9S08LL36 MC9S08LL64 MC9S08LC36 MC9S08LC60 MC9S08LH36 MC9S08LH64 MC9S08MP12 MC9S08MP16 MC9S08MM32 MC9S08MM64 MC9S08MM128 MC9S08MT8 MC9S08MT16 MC9S08QA2 MC9S08QA4 MC9S08QB4 MC9S08QB8 MC9S08QD2 MC9S08QD4 MC9S08QE4 MC9S08QE8 MC9S08QE16 MC9S08QE32 MC9S08QE64 MC9S08QE96 MC9S08QE128 MC9S08QG4 MC9S08QG8 MC9S08QG44 MC9S08QG84 MC9S08RC8 MC9S08RC16 MC9S08RC32 MC9S08RC60 MC9S08RD8 MC9S08RD16 MC9S08RD32 MC9S08RD60 MC9S08RE8 MC9S08RE16 MC9S08RE32 MC9S08RE60 MC9S08RG32 MC9S08RG60 MC9S08RX32 MC9S08SE4 MC9S08SE8 MC9S08SF4 MC9S08SH4 MC9S08SH8 MC9S08SH16 MC9S08SH32 MC9S08SL8 MC9S08SL16 MC9S08SV8 MC9S08SV16 ...

    Серия MC9RS08: обратная разработка MCU: MC9RS08KA1 MC9RS08KA2 MC9RS08KA4 MC9RS08KA8 MC9RS08KB2 MC9RS08KB4 MC9RS08KB8 MC9RS08KB12 MC9RS08LA8 MC9RS08LE4 MC9RS08SA4 MC9RS08SA12 ...

    Серия 68HC16: обратная разработка MCU: 68HC16R1 68HC16Y1 68HC16Y3 68HC16Z1 68HC16Z3 ...

    Серия MC68HC912: обратная разработка MCU: MC68HC912B32CFU8 MC68HC912B32MFU8 MC68HC912D60CPV8 ...

    Серия MC9S12 MC9S12X: обратная разработка MCU: MC9S12A32 MC9S12A64 MC9S12A128 MC9S12A256 MC9S12A512 MC9S12B32 MC9S12B64 MC9S12B96 MC9S12B128 MC9S12B256 MC9S12C32 MC9S12C64 MC9S12C96 MC9S12C128 MC9S12D32 MC9S12D64 MC9S12D96 MC9S12DB64 MC9S12DB128 MC9S12DG128 MC9S12DG256 MC9S12DJ64 MC9S12DJ128 MC9S12DJ256 MC9S12DP512 MC9S12DT128 MC9S12DT256 MC9S12DT512 MC9S12DE32 MC9S12DE64 MC9S12DE128 MC9S12GC16 MC9S12GC32 MC9S12GC64 MC9S12GC96 MC9S12GC128 MC9S12H128 MC9S12H256 MC9S12HZ256 MC9S12HZ128 MC9S12HZ64 MC9S12KG128 MC9S12KG256 MC9S12KT256 MC9S12KC128 MC9S12KT256 MC9S12NE64 MC9S12P32 MC9S12P64 MC9S12P96 MC9S12P128 MC9S12Q64 MC9S12Q96 MC9S12Q128 MC9S12UF32 MC9S12XA256 MC9S12XA512 MC9S12XB128 MC9S12XD64 MC9S12XD128 MC9S12XD256 MC9S12XD256 MC9S12XD384 MC9S12XDG128 MC9S12XDG256 MC9S12XDP512 MC9S12XDT256 MC9S12XDT512 MC9S12XEG128 MC9S12XEP100 MC9S12XEP768 MC9S12XEQ384 MC9S12XEQ512 MC9S12XET256 MC9S12XF512 MC9S12XHZ256 MC9S12XHZ512 MC9S12XS64 MC9S12XS128 MC9S12XS25 ...

    Серия 56800/E DSP: обратная разработка MCU: DSP56F801X DSP56F802X DSP56F803X DSP56852 DSP56853 DSP56854 DSP56855 DSP56857 DSP56858 DSP56F801 DSP56F801FA60 DSP56F802 DSP56F802TA60 DSP56F803 DSP56F805 DSP56F807 DSP56F826 DSP56F827 DSP56F812X DSP56F8135 DSP56F814X DSP56F815X DSP56F816X DSP56F824X DSP56F825X DSP56F832X DSP56F8335 DSP56F834X DSP56F835X DSP56F836X ...

    Серия MC56F80xx: обратная разработка MCU: MC56F801X MC56F802X MC56F803X MC56F800X MC56F8023M MC56F8023V MC56F8025M MC56F8025V MC56F8027M MC56F8027V MC56F8033M MC56F8033V MC56F8035M MC56F8035V MC56F8036M MC56F8036V MC56F8037M MC56F8037V ...

    Серия MC912: обратная разработка MCU: MC912DG128 MC912DT128 MC912D60 MC912B32 ...

    Серия MC68HC811E2: обратная разработка MCU: MC68HC812A4CPV8 ...

    Серия MC68HRC908: обратная разработка MCU: MC68HRC908JK1 MC68HRC908JK3 MC68HRC908JL3 ...

    Серия MC68HSC705: обратная разработка MCU: MC68HSC705C4 MC68HSC705C8 MC68HSC705J1 MC68S711E9 ...

    Серия PC68HC908XX: обратная разработка MCU: PC68HC908GP32 ...

    Серия PC9S12: обратная разработка MCU: PC9S12UF32 PC9S12XF128 PC9S12XF256 PC9S12XF384 PC9S12XF512 PC9S12XHZ256 PC9S12XHZ384 PC9S12XHZ512 ...

    Серия S9S08: обратная разработка MCU:
    S9S08AW16 S9S08AW32 S9S08AW48 S9S08AW60 S9S08DN16 S9S08DN32 S9S08DN48 S9S08DN60 S9S08DV128 S9S08DV16 S9S08DV32 S9S08DV48 S9S08D60 S9S08DV96 S9S08DZ128 S9S08DZ16 S9S08DZ32 S9S08DZ48 S9S08DZ60 S9S08DZ96 S9S08EL16 S9S08EL32 S9S08LG16 S9S08LG32 S9S08MP16 S9S08QD2 S9S08QD4 S9S08SG16 S9S08SG4 S9S08SG8 S9S08SG32 S9S08SL16 S9S08SL8 ...

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


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

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

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

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


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

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

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

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

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

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

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


  • Декомпилятор двоичного кода DCC

    Декомпилятор DCC: проектирование, реализация, анализ и расширенный технический обзор

    1. Обзор декомпилятора DCC

    Декомпилятор DCC является пионерским инструментом двоичной декомпиляции, разработанным для преобразования исполняемых двоичных файлов DOS для Intel i386 в читаемый код на языке C. Он был создан Кристиной Сифуэнтес в рамках её докторской исследовательской программы, проводимой в период с 1991 по 1994 год в Технологическом университете Квинсленда (QUT) в Австралии. Весь исследовательский проект курировал профессор Джон Гоф, который руководил теоретической основой и структурным проектированием системы обратной компиляции. Майк Ван Эммерик, ещё один ключевой участник, работавший в QUT на этапе разработки, создал модули распознавания библиотечных сигнатур, которые остаются ключевым функциональным компонентом цепочки инструментов DCC и сегодня. Полный пакет DCC распространяется под лицензией GNU General Public License (GPL) с открытым исходным кодом, что позволяет проводить академические исследования и некоммерческие модификации мировому сообществу специалистов по обратной разработке.

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

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

    2. Основные функциональные характеристики DCC

    DCC специально разработан для обработки 16-битных и 32-битных исполняемых файлов .exe, скомпилированных для среды выполнения Intel i386 DOS. Его основной вывод — структурированный, синтаксически корректный исходный код на C, реконструирующий высокоуровневую логику входного двоичного файла. Когда некоторые низкоуровневые ассемблерные подпрограммы не могут быть абстрагированы в стандартный синтаксис C из-за архитектурных ограничений или отсутствия контекстных метаданных, DCC встраивает блоки встроенного ассемблера непосредственно в генерируемый код C для точного сохранения поведения исходной программы. Этот гибридный формат вывода балансирует читаемость высокоуровневой логики и функциональную точность для аппаратно-зависимых низкоуровневых операций.

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

    Крайне важно понимать ключевое функциональное ограничение оригинального набора инструментов DCC. Декомпилятор способен генерировать только стандартный исходный код ANSI C в качестве конечного вывода. Он не поддерживает объектно-ориентированный синтаксис, структуры классов, полиморфизм или любые другие функции, специфичные для C++. Даже более поздняя экспериментальная объектно-ориентированная сборка DCC включает только внутренние улучшения OOP-фреймворка для самого движка и не может генерировать нативные выходные файлы C++ из входных исполняемых файлов. Это ограничение было преднамеренным во время разработки, поскольку диссертационное исследование было сосредоточено исключительно на декомпиляции процедурных языков, а не на рабочих процессах объектно-ориентированной бинарной реконструкции.

    Внутренняя архитектура DCC повторяет классическую трёхэтапную структуру традиционного оптимизирующего компилятора, работая в обратном порядке для достижения декомпиляции. Фронтальная часть действует как машинно-зависимый модуль синтаксического анализа, который считывает необработанный машинный код i386, декодирует семантику команд и преобразует платформенно-специфичные двоичные данные в нейтральное промежуточное представление программы. Средний слой, официально названный Универсальной декомпилирующей машиной (UDM), работает независимо от аппаратных архитектур и целевых языков программирования. Он выполняет анализ потоков данных, реструктуризацию управления потоком и устранение избыточных инструкций для преобразования низкоуровневого промежуточного кода в семантически богатые высокоуровневые структуры программы. Конечный внутренний модуль зависит от языка и преобразует уточнённое промежуточное представление в отформатированные, читаемые файлы исходного кода C для просмотра и перекомпиляции конечным пользователем.

    В реальных сценариях развёртывания DCC никогда не работает как автономный исполняемый файл. Набор вспомогательных инструментов работает вместе с основным двоичным файлом декомпилятора для улучшения качества и читаемости вывода. Эти вспомогательные программы сканируют входные двоичные файлы для идентификации уникальных отпечатков компилятора и сигнатур стандартных библиотечных функций. После распознавания статические стартовые заглушки, вставленные исходным компилятором, и предварительно связанные библиотечные подпрограммы автоматически исключаются из основного анализа декомпиляции. Этот процесс фильтрации удаляет шаблонный ассемблерный код из финального вывода C, позволяя аналитикам сосредоточиться исключительно на пользовательской логике, реализованной разработчиком программного обеспечения.

    Распознавание сигнатур является одним из наиболее значимых этапов постобработки во всём рабочем процессе DCC. Без точного сопоставления сигнатур генерируемый код C был бы загромождён тысячами строк повторяющегося, неинформативного ассемблера библиотек времени выполнения, скрывающего уникальную программную логику. База данных сигнатур была специально обучена для двоичных форматов эпохи DOS, в которых отсутствуют динамические фреймворки общих библиотек, характерные для современных операционных систем. Это делает статическое сопоставление сигнатур незаменимым для очистки результатов декомпиляции устаревших 16-битных двоичных файлов.

    Многие начинающие специалисты по обратной разработке путают декомпиляторы, такие как DCC, с базовыми дизассемблерами. Дизассемблер только переводит двоичные коды операций в читаемые ассемблерные мнемоники без анализа структуры программы или семантики.



    Услуги разблокировки MCU


    время взлома микроконтроллера

    Лет

    28 +
    страны взлома микроконтроллеров

    Стран

    110 +
    клиенты по атакам на микроконтроллеры

    Клиентов

    5000 +
    разблокированные проекты микроконтроллеров

    Проектов

    60000 +