Lo que realmente promete un formato binario
Canonical title: What a binary format actually promises
Un archivo Mach-O no es "código máquina con un encabezado". Es un acuerdo estructurado entre productores y consumidores de código ejecutable.
El productor puede ser un compilador, ensamblador, enlazador, empaquetador o herramienta de firma de código. Los consumidores incluyen el kernel, dyld, depuradores, herramientas de simbolización, analizadores estáticos, reporteros de fallos y tu propio analizador.
Esa distinción importa porque el archivo contiene varios tipos diferentes de verdad:
- identidad — arquitectura, tipo de archivo, orden de bytes y anchura del formato;
- instrucciones de mapeo — qué bytes se convierten en qué rangos de memoria virtual y con qué protecciones;
- instrucciones de enlace — qué necesita ser enlazado, reubicado (rebased) o resuelto contra otras imágenes;
- metadatos — símbolos, cadenas, estructuras en tiempo de ejecución, información de compilación y requisitos de plataforma;
- material de confianza — hashes, estructuras de firma de código, privilegios (entitlements) y blobs relacionados.
El primer hábito para este curso es simple: no memorices una captura de pantalla del diseño de un archivo. Aprende a preguntar qué consumidor necesita cada campo y qué puede inferir legítimamente ese consumidor.
Los cuatro valores mágicos que deberías reconocer
Mach-O clásico usa valores mágicos distintos para archivos de 32 bits y 64 bits y para representaciones nativas versus con bytes intercambiados. Los contenedores universales ("fat") tienen sus propios valores mágicos.
Cuando inspeccionas los primeros cuatro bytes, no estás simplemente identificando "un binario de Apple". Estás determinando qué ruta de análisis es válida.
Para Mach-O de 64 bits little‑endian en plataformas Apple modernas, los bytes aparecen habitualmente como:
cf fa ed fe
Interpretado como un entero de 32 bits little‑endian, eso es MH_MAGIC_64.
No dejes que el orden visual de los bytes te confunda: los bytes en disco y el valor entero impreso en un archivo de encabezado son dos vistas del mismo valor bajo una convención de endianidad.
Hábito de verificación
Para cada afirmación generada por una herramienta en este curso, practica encontrar los bytes o la estructura que la justifiquen. Las herramientas son útiles; no son oráculos.