Ingeniería inversa de MCU

Desbloqueo de Microcontroladores - MikaTech

Nuestros valores y objetivos

Acerca de MikaTech

El tiempo pasó rápido, desde el día que hicimos nuestro primer proyecto de ingeniería inversa de MCU 8051 en 1998, hasta el día que establecimos nuestro laboratorio de ingeniería inversa de un millón de dólares en 2012, pasaron 14 años. Ahora comenzamos nuestro nuevo negocio de desarrollo de sistemas visuales embebidos, esperamos poder servir otros 10 años.

firma Peter Lee Co-Fundador y CEO

Cómo descompilar un programa de chip - Descarga del desensamblador Atmel AVR

El Descompilador de Código Binario

El Descompilador Binario DCC: Diseño, Implementación, Análisis y Resumen Técnico Ampliado

1. Visión general del descompilador DCC

El descompilador DCC es una herramienta pionera de descompilación binaria desarrollada para traducir binarios ejecutables DOS de Intel i386 a código fuente C legible por humanos. Fue creado originalmente por Cristina Cifuentes durante su programa de investigación de doctorado realizado entre 1991 y 1994 en la Universidad Tecnológica de Queensland (QUT) en Australia. Todo el proyecto de investigación fue supervisado por el profesor John Gough, quien guió el marco teórico y el diseño estructural del sistema de descompilación inversa. Mike Van Emmerik, otro colaborador clave empleado por QUT durante la fase de desarrollo, diseñó los módulos de reconocimiento de firmas de bibliotecas que siguen siendo un componente funcional central del conjunto de herramientas DCC en la actualidad. El paquete completo de software DCC se publica y distribuye bajo la licencia pública general GNU (GPL) de código abierto, lo que permite la investigación académica y la modificación no comercial por parte de la comunidad global de ingeniería inversa.

El documento readme oficial incluido en el archivo de software DCC contiene orientación detallada sobre el contenido del paquete, pasos de compilación, dependencias de ejecución y notas de versión históricas. El equipo de desarrollo original ya no proporciona soporte técnico activo, corrección de errores o consultoría personalizada para la base de código DCC heredada. Cualquier consulta por correo electrónico enviada a los autores originales recibirá automáticamente una respuesta automatizada estándar indicando que el soporte formal no está disponible. Aunque el mantenimiento independiente de DCC ha cesado, el equipo de investigación continúa participando en el proyecto colaborativo de descompilador de código abierto Boomerang. Esta iniciativa moderna se basa en las teorías centrales, diseños arquitectónicos e implementaciones funcionales originalmente validadas por DCC y el marco de análisis binario UQBT para desarrollar un motor de descompilación completamente reorientable y multiplataforma para tareas contemporáneas de análisis binario.

La descompilación tiene tres propósitos legítimos críticos dentro del campo de la ingeniería informática y la ciberseguridad. Permite a los ingenieros realizar la recuperación de código fuente para software heredado cuyos archivos de proyecto originales se han perdido o dañado permanentemente. Facilita la investigación de interoperabilidad entre plataformas al exponer la lógica binaria no documentada para la adaptación de protocolos y la migración de sistemas. También respalda la corrección precisa de errores y la auditoría de vulnerabilidades para binarios embebidos de código cerrado que no se pueden modificar mediante flujos de trabajo de parcheo de software convencionales. A pesar de estas aplicaciones legales y éticas, DCC y todos los descompiladores de propósito general nunca deben utilizarse para actividades de cracking de programas no autorizadas. Los binarios de software compilados están completamente protegidos por la ley de derechos de autor internacional, y la manipulación, modificación o extracción de activos no autorizada constituye tanto un delito penal como una explotación no ética del trabajo creativo de los desarrolladores originales. Se anima a los lectores a revisar la literatura formal sobre la ética profesional de la descompilación para distinguir el uso académico legítimo de la piratería de software maliciosa.

2. Características funcionales principales de DCC

DCC está diseñado específicamente para procesar archivos ejecutables .exe de 16 y 32 bits compilados para el entorno de ejecución DOS de Intel i386. Su salida principal es código fuente C estructurado y sintácticamente válido que reconstruye la lógica de alto nivel del programa binario de entrada. Cuando ciertas rutinas de ensamblador de bajo nivel no pueden abstraerse en sintaxis C estándar debido a limitaciones arquitectónicas o falta de metadatos contextuales, DCC incorpora bloques de ensamblador en línea directamente dentro del código C generado para preservar con precisión el comportamiento del programa original. Este formato de salida híbrido equilibra la legibilidad para la lógica de alto nivel y la precisión funcional para operaciones de bajo nivel específicas del hardware.

El motor analítico dentro de DCC se basa en dos disciplinas fundamentales de la informática: la teoría clásica de optimización de compiladores y la teoría de grafos direccionales. Los algoritmos de optimización de compiladores permiten a la herramienta eliminar operaciones de registro redundantes, eliminar instrucciones de ensamblador intermedias y reconstruir sentencias C de alto nivel semánticamente precisas a partir de instrucciones de máquina en bruto. Los algoritmos de teoría de grafos permiten al software mapear rutas de ejecución dentro de cada subrutina del programa, identificar límites de bucles, clasificar bifurcaciones condicionales y reconstruir estructuras de flujo de control jerárquicas que coinciden con la lógica fuente original. Este enfoque analítico dual diferencia a DCC de los desensambladores básicos que solo muestran el ensamblador en bruto sin reconstrucción estructural.

Es crucial comprender una limitación funcional clave del conjunto de herramientas DCC original. El descompilador solo es capaz de generar código fuente C ANSI estándar como salida final. No admite sintaxis orientada a objetos, estructuras de clase, polimorfismo ni ninguna otra característica específica de C++. Incluso la versión experimental orientada a objetos posterior de DCC solo incluye mejoras internas del marco OOP para el propio motor y no puede generar binarios de salida C++ nativos a partir de ejecutables de entrada. Esta limitación fue intencional durante el desarrollo, ya que la investigación de doctorado se centró exclusivamente en la descompilación de lenguajes procedimentales en lugar de en flujos de trabajo de reconstrucción binaria orientada a objetos.

La arquitectura interna de DCC refleja la estructura clásica de tres etapas de un compilador optimizador tradicional, operando en orden inverso para lograr la descompilación. El frontend actúa como un módulo de análisis dependiente de la máquina que lee el código máquina i386 en bruto, decodifica la semántica de los opcodes y convierte los datos binarios específicos de la plataforma en una representación de programa intermedia neutral. La capa intermedia, denominada oficialmente Máquina Universal de Descompilación (UDM), opera de forma independiente tanto de las arquitecturas de hardware como de los lenguajes de programación objetivo. Ejecuta el análisis de flujo de datos central, la reestructuración del flujo de control y la eliminación de instrucciones redundantes para elevar el código intermedio de bajo nivel a estructuras de programa de alto nivel semánticamente ricas. El módulo backend final depende del lenguaje y traduce la representación intermedia refinada a archivos de código fuente C formateados y legibles por humanos para su revisión y recompilación por parte del usuario final.

En escenarios de implementación práctica, DCC nunca se opera como un ejecutable independiente. Un conjunto de herramientas auxiliares complementarias trabaja junto con el binario del descompilador principal para mejorar la calidad y legibilidad de la salida. Estos programas auxiliares escanean los binarios de entrada para identificar huellas de compilador únicas y firmas de funciones de biblioteca estandarizadas. Una vez reconocidas, los stubs de inicio estáticos insertados por el compilador original y las rutinas de biblioteca preenlazadas se excluyen automáticamente del análisis de descompilación principal. Este proceso de filtrado elimina el código de ensamblador repetitivo de la salida C final, lo que permite a los analistas centrarse exclusivamente en la lógica de usuario personalizada implementada por el desarrollador de software original.

El reconocimiento de firmas es uno de los pasos de posprocesamiento más impactantes dentro de todo el flujo de trabajo de DCC. Sin una coincidencia precisa de firmas, el código C generado estaría plagado de miles de líneas de ensamblador de bibliotecas de tiempo de ejecución repetitivas y poco informativas que oscurecen la lógica única del programa. La base de datos de firmas se entrenó específicamente para formatos binarios de la era DOS, que carecen de los marcos de bibliotecas compartidas dinámicas que se encuentran en los sistemas operativos modernos. Esto hace que la coincidencia de firmas estáticas sea indispensable para limpiar los resultados de descompilación de binarios heredados de 16 bits.

Muchos ingenieros inversos novatos confunden descompiladores como DCC con herramientas de desensamblado básicas. Un desensamblador solo traduce opcodes binarios a mnemónicos de ensamblador legibles por humanos sin analizar la estructura del programa ni la semántica

  • Lista de ingeniería inversa de MCU Freescale/Motorola de Mikatech:
  • Serie HC908: HC908AB32 HC908AP8 HC908AP16 HC908AP32 HC908AP64 HC908AZ60 HC908JK1 HC908JK3 HC908JK8 HC908JK32 HC908JW16 HC908JW32 HC908LK24 HC908MR8 HC908GR8 HC908QT1 HC908QT2 HC908QT4 HC908QY1 HC908QY2 HC908QY4 HC908RF2 HC908RK2 ...

    Serie MC908: 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 ...

    Serie MC68HC05: 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 ...

    Serie MC68HC705: 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 ...

    Serie MC68HC11: 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 ...

    Serie MC68HC711: MC68HC711D3 MC68HC711E9 MC68HC711E20 MCMC68HC711M2 MCMC68HC711MA8 MC68HC711K4 MC68HC711KA2 MC68HC711KS2 MC68HC711KS8 MCMC68HC711L6 MCMC68HC711P2 MCMC68HC711SA2FG MCMC68HC711FA2 ...

    Serie MC68HC08: 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 ...

    Serie MC68HC908: 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 ...

    Serie MC9S08: 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 ...

    Serie MC9RS08: MC9RS08KA1 MC9RS08KA2 MC9RS08KA4 MC9RS08KA8 MC9RS08KB2 MC9RS08KB4 MC9RS08KB8 MC9RS08KB12 MC9RS08LA8 MC9RS08LE4 MC9RS08SA4 MC9RS08SA12 ...

    Serie 68HC16: 68HC16R1 68HC16Y1 68HC16Y3 68HC16Z1 68HC16Z3 ...

    Serie MC68HC912: MC68HC912B32CFU8 MC68HC912B32MFU8 MC68HC912D60CPV8 ...

    Serie MC9S12 / MC9S12X: 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 ...

    Serie DSP 56800/E: 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 ...

    Serie MC56F80xx: MC56F801X MC56F802X MC56F803X MC56F800X MC56F8023M MC56F8023V MC56F8025M MC56F8025V MC56F8027M MC56F8027V MC56F8033M MC56F8033V MC56F8035M MC56F8035V MC56F8036M MC56F8036V MC56F8037M MC56F8037V ...

    Serie MC912: MC912DG128 MC912DT128 MC912D60 MC912B32 ...

    Serie MC68HC811E2: MC68HC812A4CPV8 ...

    Serie MC68HRC908: MC68HRC908JK1 MC68HRC908JK3 MC68HRC908JL3 ...

    Serie MC68HSC705: MC68HSC705C4 MC68HSC705C8 MC68HSC705J1 MC68S711E9 ...

    Serie PC68HC908XX: PC68HC908GP32 ...

    Serie PC9S12: PC9S12UF32 PC9S12XF128 PC9S12XF256 PC9S12XF384 PC9S12XF512 PC9S12XHZ256 PC9S12XHZ384 PC9S12XHZ512 ...

    Serie S9S08:
    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 ...

Preguntas generales sobre extracción de firmware de microcontroladores


  • ¿Es seguro enviar un pago a MikaTech?

    Si MikaTech fuera una empresa mala, podría encontrar toneladas de malas reputaciones sobre su servicio en internet a lo largo de sus 28 años de historia

    Por lo tanto, ¡la respuesta es SÍ! Somos buena gente.

    Por qué elegir Mikatech, por favor haga clic aquí para averiguarlo


  • ¿Puede Mikatech romper circuitos integrados no listados en este sitio?

    Diferentes fabricantes de chips tienen diferentes números de pieza, pero el núcleo interno del chip puede estar fabricado con la misma tecnología, sería bastante imposible enumerar todos los números de pieza donde nuestra tecnología puede aplicarse, como MYSON, STK, FEELING, ANALOG, FUJITSU, NOVATEK, LG/HYNDAI.

    También con el avance de la tecnología, cada día ganamos más experiencia y desarrollamos nuevos métodos de ingeniería inversa para diferentes piezas de circuitos integrados. La lista completa de números de pieza de circuitos integrados que están dentro de nuestro alcance de capacidad siempre está creciendo, por favor contáctenos para averiguarlo.

  • ¿Se protegerá mi privacidad?

    Mikatech Innovative Limited comprende la importancia de la privacidad de sus clientes. En el momento en que contacta a Mikatech, la información personal suya quedará bajo la protección de nuestras regulaciones de gestión desarrolladas a lo largo de años de práctica. Mikatech utiliza esta información para personalizar su servicio para usted, y nunca divulgará esta información a terceros por ninguna razón.
    En cada proyecto que realizamos, eliminamos todos los datos, materiales y códigos 60 días después de entregar los archivos, lo que nos protege a nosotros y protege su privacidad.

  • ¿Es legal obtener servicios de Mikatech?

    Sí, es totalmente legal.
    Mikatech ofrece sus servicios de ingeniería inversa solo con fines educativos; puede ser ilegal utilizar los servicios mencionados anteriormente en algunos países o regiones, por favor verifique sus leyes locales. Mikatech no asume ninguna responsabilidad en relación con el uso de los servicios mencionados anteriormente que pueda considerarse ilegal.


  • El Descompilador Binario DCC

    El Descompilador Binario DCC: Diseño, Implementación, Análisis y Resumen Técnico Ampliado

    1. Visión general del descompilador DCC

    El descompilador DCC es una herramienta pionera de descompilación binaria desarrollada para traducir binarios ejecutables DOS de Intel i386 a código fuente C legible por humanos. Fue creado originalmente por Cristina Cifuentes durante su programa de investigación de doctorado realizado entre 1991 y 1994 en la Universidad Tecnológica de Queensland (QUT) en Australia. Todo el proyecto de investigación fue supervisado por el profesor John Gough, quien guió el marco teórico y el diseño estructural del sistema de descompilación inversa. Mike Van Emmerik, otro colaborador clave empleado por QUT durante la fase de desarrollo, diseñó los módulos de reconocimiento de firmas de bibliotecas que siguen siendo un componente funcional central del conjunto de herramientas DCC en la actualidad. El paquete completo de software DCC se publica y distribuye bajo la licencia pública general GNU (GPL) de código abierto, lo que permite la investigación académica y la modificación no comercial por parte de la comunidad global de ingeniería inversa.

    El documento readme oficial incluido en el archivo de software DCC contiene orientación detallada sobre el contenido del paquete, pasos de compilación, dependencias de ejecución y notas de versión históricas. El equipo de desarrollo original ya no proporciona soporte técnico activo, corrección de errores o consultoría personalizada para la base de código DCC heredada. Cualquier consulta por correo electrónico enviada a los autores originales recibirá automáticamente una respuesta automatizada estándar indicando que el soporte formal no está disponible. Aunque el mantenimiento independiente de DCC ha cesado, el equipo de investigación continúa participando en el proyecto colaborativo de descompilador de código abierto Boomerang. Esta iniciativa moderna se basa en las teorías centrales, diseños arquitectónicos e implementaciones funcionales originalmente validadas por DCC y el marco de análisis binario UQBT para desarrollar un motor de descompilación completamente reorientable y multiplataforma para tareas contemporáneas de análisis binario.

    La descompilación tiene tres propósitos legítimos críticos dentro del campo de la ingeniería informática y la ciberseguridad. Permite a los ingenieros realizar la recuperación de código fuente para software heredado cuyos archivos de proyecto originales se han perdido o dañado permanentemente. Facilita la investigación de interoperabilidad entre plataformas al exponer la lógica binaria no documentada para la adaptación de protocolos y la migración de sistemas. También respalda la corrección precisa de errores y la auditoría de vulnerabilidades para binarios embebidos de código cerrado que no se pueden modificar mediante flujos de trabajo de parcheo de software convencionales. A pesar de estas aplicaciones legales y éticas, DCC y todos los descompiladores de propósito general nunca deben utilizarse para actividades de cracking de programas no autorizadas. Los binarios de software compilados están completamente protegidos por la ley de derechos de autor internacional, y la manipulación, modificación o extracción de activos no autorizada constituye tanto un delito penal como una explotación no ética del trabajo creativo de los desarrolladores originales. Se anima a los lectores a revisar la literatura formal sobre la ética profesional de la descompilación para distinguir el uso académico legítimo de la piratería de software maliciosa.

    2. Características funcionales principales de DCC

    DCC está diseñado específicamente para procesar archivos ejecutables .exe de 16 y 32 bits compilados para el entorno de ejecución DOS de Intel i386. Su salida principal es código fuente C estructurado y sintácticamente válido que reconstruye la lógica de alto nivel del programa binario de entrada. Cuando ciertas rutinas de ensamblador de bajo nivel no pueden abstraerse en sintaxis C estándar debido a limitaciones arquitectónicas o falta de metadatos contextuales, DCC incorpora bloques de ensamblador en línea directamente dentro del código C generado para preservar con precisión el comportamiento del programa original. Este formato de salida híbrido equilibra la legibilidad para la lógica de alto nivel y la precisión funcional para operaciones de bajo nivel específicas del hardware.

    El motor analítico dentro de DCC se basa en dos disciplinas fundamentales de la informática: la teoría clásica de optimización de compiladores y la teoría de grafos direccionales. Los algoritmos de optimización de compiladores permiten a la herramienta eliminar operaciones de registro redundantes, eliminar instrucciones de ensamblador intermedias y reconstruir sentencias C de alto nivel semánticamente precisas a partir de instrucciones de máquina en bruto. Los algoritmos de teoría de grafos permiten al software mapear rutas de ejecución dentro de cada subrutina del programa, identificar límites de bucles, clasificar bifurcaciones condicionales y reconstruir estructuras de flujo de control jerárquicas que coinciden con la lógica fuente original. Este enfoque analítico dual diferencia a DCC de los desensambladores básicos que solo muestran el ensamblador en bruto sin reconstrucción estructural.

    Es crucial comprender una limitación funcional clave del conjunto de herramientas DCC original. El descompilador solo es capaz de generar código fuente C ANSI estándar como salida final. No admite sintaxis orientada a objetos, estructuras de clase, polimorfismo ni ninguna otra característica específica de C++. Incluso la versión experimental orientada a objetos posterior de DCC solo incluye mejoras internas del marco OOP para el propio motor y no puede generar binarios de salida C++ nativos a partir de ejecutables de entrada. Esta limitación fue intencional durante el desarrollo, ya que la investigación de doctorado se centró exclusivamente en la descompilación de lenguajes procedimentales en lugar de en flujos de trabajo de reconstrucción binaria orientada a objetos.

    La arquitectura interna de DCC refleja la estructura clásica de tres etapas de un compilador optimizador tradicional, operando en orden inverso para lograr la descompilación. El frontend actúa como un módulo de análisis dependiente de la máquina que lee el código máquina i386 en bruto, decodifica la semántica de los opcodes y convierte los datos binarios específicos de la plataforma en una representación de programa intermedia neutral. La capa intermedia, denominada oficialmente Máquina Universal de Descompilación (UDM), opera de forma independiente tanto de las arquitecturas de hardware como de los lenguajes de programación objetivo. Ejecuta el análisis de flujo de datos central, la reestructuración del flujo de control y la eliminación de instrucciones redundantes para elevar el código intermedio de bajo nivel a estructuras de programa de alto nivel semánticamente ricas. El módulo backend final depende del lenguaje y traduce la representación intermedia refinada a archivos de código fuente C formateados y legibles por humanos para su revisión y recompilación por parte del usuario final.

    En escenarios de implementación práctica, DCC nunca se opera como un ejecutable independiente. Un conjunto de herramientas auxiliares complementarias trabaja junto con el binario del descompilador principal para mejorar la calidad y legibilidad de la salida. Estos programas auxiliares escanean los binarios de entrada para identificar huellas de compilador únicas y firmas de funciones de biblioteca estandarizadas. Una vez reconocidas, los stubs de inicio estáticos insertados por el compilador original y las rutinas de biblioteca preenlazadas se excluyen automáticamente del análisis de descompilación principal. Este proceso de filtrado elimina el código de ensamblador repetitivo de la salida C final, lo que permite a los analistas centrarse exclusivamente en la lógica de usuario personalizada implementada por el desarrollador de software original.

    El reconocimiento de firmas es uno de los pasos de posprocesamiento más impactantes dentro de todo el flujo de trabajo de DCC. Sin una coincidencia precisa de firmas, el código C generado estaría plagado de miles de líneas de ensamblador de bibliotecas de tiempo de ejecución repetitivas y poco informativas que oscurecen la lógica única del programa. La base de datos de firmas se entrenó específicamente para formatos binarios de la era DOS, que carecen de los marcos de bibliotecas compartidas dinámicas que se encuentran en los sistemas operativos modernos. Esto hace que la coincidencia de firmas estáticas sea indispensable para limpiar los resultados de descompilación de binarios heredados de 16 bits.

    Muchos ingenieros inversos novatos confunden descompiladores como DCC con herramientas de desensamblado básicas. Un desensamblador solo traduce opcodes binarios a mnemónicos de ensamblador legibles por humanos sin analizar la estructura del programa ni la semántica



    tiempo de hackeo de microcontrolador

    Años

    28 +
    países de hackeo de microcontrolador

    Países

    110 +
    clientes de ataque a microcontrolador

    Clientes

    5000 +
    proyectos de microcontrolador desbloqueados

    Proyectos

    60000 +