Analizador de Binarios Mach-O
Analiza cabeceras de binarios Mach-O, binarios universales FAT, arquitecturas de CPU, comandos de carga, segmentos, secciones y tablas de símbolos, todo en tu navegador. Admite formatos Mach-O de 32 bits, 64 bits y FAT (universal) para macOS, iOS y todos los binarios de plataformas Apple. Gratis, privado y sin registro.
¿Por qué usar nuestro Analizador de Binarios Mach-O?
- Compatibilidad completa con el formato Mach-O: analiza todas las variantes de Mach-O, incluidas las de 32 bits (MH_MAGIC), 64 bits (MH_MAGIC_64) y los binarios universales FAT (FAT_MAGIC). Detecta automáticamente el orden de bytes (little/big endian) y maneja tanto binarios simples como multiarquitectura.
- Detección de arquitecturas de CPU: identifica todas las arquitecturas de CPU principales de Apple, incluidas arm64 (Apple Silicon), x86_64 (Intel de 64 bits), i386 (Intel de 32 bits), ARM y PowerPC. Muestra el tipo y subtipo de CPU y detalles específicos de la arquitectura con descripciones formateadas.
- Inspector de comandos de carga y segmentos: interpreta todos los comandos de carga (LC_SEGMENT, LC_SYMTAB, LC_UUID, LC_BUILD_VERSION, LC_MAIN y más de 40). Muestra cada segmento con sus secciones, direcciones virtuales, desplazamientos de archivo, flags de protección y entradas de reubicación en tablas ordenables.
- 100 % privado: sin subida obligatoria: todo el análisis Mach-O ocurre íntegramente en tu navegador. Sube un binario o pega datos hexadecimales: no se envía nada a ningún servidor. Sin cuenta, sin registro y sin seguimiento. Exporta los resultados del análisis copiándolos o descargándolos.
Casos de uso comunes del Analizador Mach-O
- Análisis de malware e ingeniería inversa: los analistas de seguridad usan el analizador Mach-O para inspeccionar binarios sospechosos de macOS e iOS. Detecta si un binario es un universal FAT que oculta varias arquitecturas, inspecciona los comandos de carga en busca de dependencias dylib inusuales y examina los flags de sección en busca de permisos sospechosos como regiones de memoria escribibles y ejecutables.
- Verificación e integridad de binarios: comprueba que un binario Mach-O tenga la arquitectura de CPU esperada, verifica el flag PIE (ejecutable independiente de la posición), inspecciona la presencia de firma de código y valida la coincidencia de UUID. Es esencial para verificar canalizaciones de compilación y garantizar la arquitectura correcta.
- Análisis de símbolos de depuración y eliminación: analiza si un binario tiene los símbolos eliminados examinando el tamaño de la tabla de símbolos y los comandos de carga. Detecta paquetes dSYM asociados, inspecciona las entradas nlist para identificar los símbolos restantes y determina si el binario está firmado y notarizado.
- Detección de ofuscación y protección: identifica binarios Mach-O ofuscados o protegidos detectando secciones cifradas (LC_ENCRYPTION_INFO), comprobando indicadores de fairplay/DRM, examinando atributos de sección inusuales y analizando anomalías en la tabla de símbolos habituales en binarios protegidos.
- Validador de apps para la App Store de macOS/iOS: valida los binarios de apps de iOS y macOS antes de enviarlos a la App Store. Comprueba las arquitecturas requeridas (arm64 para iOS, arm64 + x86_64 para binarios universales de macOS), verifica el subtipo de CPU correcto e inspecciona los requisitos de versión mínima del sistema operativo en cada porción Mach-O.
- Formación e investigación sobre el formato Mach-O: estudiantes e investigadores pueden explorar el formato de archivo Mach-O de forma interactiva. Carga binarios de ejemplo para ver cómo funciona la estructura de cabecera Mach-O, entender las cadenas de comandos de carga, explorar las relaciones segmento/sección y aprender sobre las entradas de la tabla de símbolos nlist.
¿Qué es un binario Mach-O?
Mach-O (Mach Object) es el formato ejecutable nativo de macOS, iOS, iPadOS, watchOS y tvOS. Sustituyó al antiguo formato a.out y es el formato binario estándar de todos los sistemas operativos de Apple. Cada app, framework, biblioteca y herramienta de línea de comandos de las plataformas Apple se empaqueta como binario Mach-O. El formato admite varias arquitecturas de CPU en un solo archivo mediante el formato binario FAT (universal), con el número mágico 0xCAFEBABE. Los archivos Mach-O contienen una cabecera, una cadena de comandos de carga que describe la estructura del binario y los datos de segmento reales (código, datos, tablas de símbolos, etc.).
Cómo funciona el Analizador Mach-O
- Detección de la entrada: el analizador lee los 4 primeros bytes (número mágico) para determinar el formato (32 bits 0xFEEDFACE, 64 bits 0xFEEDFACF o universal FAT 0xCAFEBABE) y detecta el orden de bytes (little-endian para Apple Silicon/Intel, big-endian para PowerPC).
- Análisis de la cabecera: se analiza la cabecera Mach-O para extraer el tipo de CPU, el subtipo de CPU, el tipo de archivo (ejecutable, dylib, bundle, objeto, etc.), el número de comandos de carga y los flags del binario (PIE, NOUNDEFS, TWOLEVEL, etc.).
- Recorrido de los comandos de carga: el analizador recorre la cadena de comandos de carga y analiza cada comando según su tipo. Los comandos de segmento (LC_SEGMENT/LC_SEGMENT_64) contienen subtablas de información de sección. Otros comandos aportan UUID, versiones mínimas, referencias a la tabla de símbolos, desplazamientos de firma de código y más.
- Extracción de la tabla de símbolos: si el binario tiene un comando LC_SYMTAB, el analizador lee las entradas nlist (struct nlist_64 para 64 bits) y resuelve los nombres de símbolos desde la tabla de cadenas. Los primeros 50 símbolos se muestran con su tipo, número de sección, flags de descripción y valores de dirección.
Conceptos clave de Mach-O
- Binario FAT (universal): comienza con la magia 0xCAFEBABE y contiene varias porciones Mach-O para distintas arquitecturas. Cada porción tiene su propio tipo de CPU, desplazamiento, tamaño y alineación. Las apps de iOS suelen tener porciones arm64; los binarios universales de macOS tienen x86_64 + arm64 para Intel y Apple Silicon.
- Comandos de carga: siguen inmediatamente a la cabecera Mach-O y describen la disposición del binario. LC_SEGMENT define las regiones de memoria mapeadas desde el archivo; LC_SYMTAB apunta a la tabla de símbolos; LC_UUID aporta un identificador único; LC_BUILD_VERSION especifica la plataforma destino y la versión del SDK.
- Segmentos y secciones: los segmentos (__TEXT, __DATA, __LINKEDIT) se mapean directamente a regiones de memoria. Las secciones dentro de los segmentos (__text, __cstring, __objc_methlist) contienen tipos concretos de contenido. Los flags de tipo de sección indican si una sección contiene código, literales de cadena, punteros a símbolos o inicializadores.
- Entradas de símbolo nlist: cada símbolo de la tabla tiene un nombre (resuelto mediante la tabla de cadenas), un tipo (indefinido, absoluto, definido en sección o indirecto), un número de sección, flags de descripción y un valor o dirección. Los símbolos externos se marcan con N_EXT para la resolución del enlazado dinámico.
Privacidad y limitaciones técnicas
El analizador Mach-O procesa todos los datos binarios íntegramente en tu navegador con JavaScript. Ningún dato se sube jamás a un servidor. El analizador interpreta la cabecera, los comandos de carga, las estructuras de segmentos y secciones y la tabla de símbolos, pero no desensambla código ejecutable, no descomprime binarios protegidos ni descifra archivos Mach-O cifrados. Los binarios con DRM FairPlay (cifrados de la App Store) mostrarán la información de cifrado, pero sus secciones de código no podrán leerse. Con binarios muy grandes (más de 500 MB), el análisis puede verse limitado por la memoria del navegador. El analizador está pensado para uso educativo, investigación de ingeniería inversa y análisis de seguridad de archivos que tengas autorización legal para inspeccionar.
Preguntas frecuentes
Mach-O (Mach Object) es el formato ejecutable nativo de los sistemas operativos de Apple (macOS, iOS, watchOS, tvOS). Usa los números mágicos 0xFEEDFACE (32 bits), 0xFEEDFACF (64 bits) y 0xCAFEBABE (binario universal FAT). A diferencia de ELF (Linux/Android) y PE (Windows), Mach-O admite binarios FAT con varias arquitecturas en un solo archivo y usa una cadena de comandos de carga para describir la disposición del binario.
Comprueba los cuatro primeros bytes (número mágico): 0xFEEDFACE para 32 bits, 0xFEEDFACF para 64 bits y 0xCAFEBABE para binarios universales FAT. Las extensiones habituales son .o (objeto), .dylib (biblioteca dinámica) y .bundle (paquete cargable). Nuestro analizador detecta y notifica el formato automáticamente al subir el archivo.
Un binario FAT contiene varios ejecutables Mach-O para distintas arquitecturas de CPU en un solo archivo. La cabecera FAT lista cada arquitectura con su tipo de CPU, desplazamiento, tamaño y alineación. Al cargarlo, el sistema operativo selecciona automáticamente la arquitectura correcta. Esto permite distribuir un único binario que se ejecuta de forma nativa tanto en Macs Intel (x86_64) como Apple Silicon (arm64).
Los comandos de carga describen la disposición del binario: LC_SEGMENT define regiones de memoria, LC_SYMTAB localiza la tabla de símbolos, LC_UUID aporta un identificador único, LC_BUILD_VERSION especifica la plataforma destino y el SDK, LC_MAIN fija el punto de entrada, LC_ENCRYPTION_INFO indica el estado del DRM FairPlay y LC_CODE_SIGNATURE apunta a los datos de firma de código.
Sí. Detecta secciones cifradas mediante LC_ENCRYPTION_INFO (cryptid != 0), identifica binarios sin símbolos por tablas de símbolos pequeñas, señala permisos sospechosos (segmentos escribibles y ejecutables) y detecta nombres o flags de sección inusuales. También informa del estado PIE, el DRM FairPlay y la presencia de firma de código.
Por supuesto. Todo el procesamiento ocurre localmente en tu navegador. Tus datos binarios nunca salen de tu dispositivo, nunca se envían a ningún servidor y nunca se almacenan. No se requiere cuenta. Puedes analizar con seguridad binarios Mach-O propietarios, confidenciales o sensibles.
El analizador interpreta cabeceras, comandos de carga, disposiciones de segmentos y secciones y tablas de símbolos. No desensambla código, no extrae recursos incrustados ni descompila el binario. Sí detecta la presencia de metadatos del entorno de ejecución de Objective-C y Swift y de secciones cstring.
El analizador admite todas las arquitecturas de Apple: arm64 (Apple Silicon), x86_64 (Intel de 64 bits), i386 (Intel de 32 bits), ARM (32 bits), PowerPC y PowerPC de 64 bits. Los binarios FAT con cualquier combinación de estas arquitecturas son totalmente compatibles.
Sí: 100 % gratis, sin registro, sin cuenta, sin límites de uso y sin planes premium. Todas las funciones, incluidas la subida de archivos, la entrada hexadecimal, el análisis FAT, el análisis de comandos de carga, la inspección de segmentos y la extracción de la tabla de símbolos, están disponibles sin restricciones.