Seguridad

Apple y su curiosa protección anti-clones de la ROMs del Macintosh mostrando el icono «¡Robado! (C) Apple»

Una de las grandes obsesiones de Apple siempre ha sido proteger al máximo su ecosistema evitando que nadie fuera capaz de copiar y mucho menos vender sus productos. El problema de los clones de Apple comenzó muy pronto, ya con el Apple II, posiblemente el más popular de todos sus ordenadores. La primera empresa (no fue la única) que creó un clon exacto del Apple II se llamaba Franklin Ace, la cual copió íntegramente la ROM para que pudiera ejecutar exactamente igual los mismos programas que el original. 
Hoy día día a nadie se le ocurre copiar y vender un ordenador o dispositivo Apple, pero hubo un tiempo en el cual algunas empresas se atrevieron a hacerlo. En aquella época el dispositivo más protegido era la firmware de la memoria ROM. Pero estos chips, al igual que le pasó a IBM, sufrieron análisis ingeniería inversa por parte de otros fabricantes para poder clonar y crear sus propios aparatos compatibles (como brillantemente muestran en la genial serie de ficción Halt Catch and Fire).
Figura 1. Franklin Computer Ace 1000, clon del Apple II. Fuente,
Pero con la llegada de los primeros Macintosh, proteger la ROM se convirtió en una prioridad. Apple durante toda su historia (sobre todo con Jobs a la cabeza) ha intentando, usando todo tipo de técnicas tanto a nivel de protección de hardware como de ámbito legal, proteger este componente fundamental de cada preciada nueva máquina. En este caso del Macintosh original, la nueva ROM incluía información muy compleja en dos chips Simtek C197728 y C19729 de 32KB cada uno los cuales formaban la ROM (64KB, mucha memoria para la época), como por ejemplo las APIs, la GUI y todo el sistema de ficheros. Esta complejidad era a la vez una desventaja y una ventaja como ahora veremos.
Figura 2. Detalle de la placa base del Macintosh 128KB y en verde los dos chips ROM. Fuente.
La principal desventaja era que contenía toda la información del ordenador y con sólo copiarla se podía conseguir un clon exacto del Macintosh, eso sí, Apple demandaría a cualquier que lo intentara. La única forma de conseguirlo de forma más o menos legal era desensamblando la ROM usando ingeniería inversa y realizar un número mínimo de cambios para que no fuera un problema legal. Y es aquí donde tenemos la ventaja, la ROM del Macintosh era tan completa como compleja. Resultaba extremadamente complicado desensamblar toda esa información y mucho más modificarla, lo cual convertía en muy costosa esta operación. Casi era más barato crear un ordenador desde cero para competir con Apple que copiar y modificar su ROM.
Pero Steve Jobs quería tener pruebas reales que pudiera utilizar en un juicio y demostrar en directo el robo perpetrado al más estilo película de Hollywood, aunque hubieran modificado toda la ROM. Entonces le pidió a su equipo de programadores del Macintosh que creara un función (totalmente ofuscada en el código de la firmware) la cual pulsando una combinación de teclas apareciera el siguiente icono mostrando la frase «Stolen!! (C) Apple«:
Figura 3. Icono «Stolen!! (C) Apple» creado por Susan Kare para los Macintosh. Fuente.
Este icono fue diseñado nada más y nada menos que por Susan Kare, y tenía que estar bien camuflado dentro de la firmware para que nadie pudiera detectarlo y borrarlo. De esta forma, pensarían que el código era parte de la ROM y no se eliminaría, dejándolo intacto en la nueva versión copiada. Así que crearon una rutina la cual pulsando la letra «G» y luego una dirección la dirección en hexadecimal activaría dicho icono en la esquina izquierda del ordenador:
  • Modelos Macintosh ED, 512KB, Plus y original 128KB: $0040E118
  • ROM Version 117, rev.1-3 (Macintosh Plus): $0040E132
  • ROM Version 120, rev. 3 (Macintosh IIx, IIcx, SE/30): $408A065A 

Figura 4. Ejemplo de ejecución de la rutina que muestra el icono. Fuente.
El icono de Susan fue sustituido posteriormente por otro más escueto, el cual sólo decía «Stolen from Apple Computer» como se puede apreciar en al figura 4. Si la combinación de teclas que hemos mencionado antes no funciona, siempre puedes crear el siguiente programa en THINK C que realiza la misma tarea:
PlotStolenIcon(inRect) 
Rect *inRect; 
      asm { 
            BRA.S @2 
            @1 DC.L 0x40E132 ;address of icon (Mac Plus ROM only!) 
            @2 MOVE.L inRect,-(SP) ;push rect argument 
            PEA @1 ;push «handle» to icon 
            DC.W 0xA94B ;_PlotIcon 
      } 
Parece ser que nunca tuvieron que hacer uso de esta rutina ya que nadie se atrevió a copiar el Macintosh por aquella época, pero el equipo de programación lo pasó muy bien tratando de usar todo tipo de técnicas para ocultar el código fuente, como buenos geek que eran. Esta fue posiblemente una de las pocas ideas de Jobs que le gustó implementar al equipo de programadores…

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.