
Reconstruyendo un protocolo USB muerto: Los secretos de una consola portátil desbloqueados con un cuchillo caliente, un viaje multidisciplinario para revivir una interfaz USB olvidada
En 2024, bjiru subió un video sobre el dispositivo portátil ME2, un juguete producido alrededor de 2008 que contaba con la capacidad de usar USB para sincronizar puntos y gemas entre tu dispositivo y un mundo en línea. El juego era extremadamente nicho, por lo que no se había archivado ningún software, controlador o activo, al menos hasta que bjiru apareció con el cliente del juego en línea.
Soy el líder de Miuchiz Reborn, un esfuerzo que comenzó en 2015 para preservar, aplicar ingeniería inversa, emular y mantener la accesibilidad de un juego similar a este, con una parte en línea y una parte portátil conectadas vía USB. Debido a la antigüedad y tipo de juego similares, el ME2 ya había sido traído a mi atención por mi comunidad de Miuchiz en 2018, ya que pensaban (erróneamente) que podrían compartir similitudes arquitectónicas. A pesar de que conocía la existencia del dispositivo desde hacía años, el video de bjiru finalmente me impulsó a comenzar a investigarlo.
Mis esfuerzos iniciales se dedicaron únicamente a recrear el servidor necesario para que la copia de bjiru del juego de computadora volviera a funcionar, pero en el camino, mi atención inevitablemente se desvió hacia el dispositivo portátil. Una recreación del juego en línea seguramente nunca podría estar completa sin el mecanismo para sincronizar tus puntos hacia y desde el dispositivo. Esta comunicación entre tu computadora y el dispositivo ME2 era el principal atractivo del juego, después de todo. Supuse que mi experiencia previa con los dispositivos portátiles Miuchiz me ayudaría a desenredar rápidamente cualquier ritual de comunicación que esperaran... siempre que pudiera obtener algo de código para aplicar ingeniería inversa.
Mi curiosidad exigió el sacrificio de ME2s. eBay exigió el sacrificio de dinero fiduciario. En poco tiempo, estos especímenes yacían ante mí.

Son unidades pequeñas con solo un par de botones y un puerto mini-USB hembra. Hay un cable incluido en la caja, pero carece de cualquier disco con software y controladores. Ese puerto USB sería la forma de sincronizar puntos entre tu computadora y el dispositivo portátil, pero cuando emprendí el mismo viaje para el dispositivo portátil Miuchiz, obtuve acceso completo a su memoria flash aplicando ingeniería inversa a cómo funcionaba su software de Windows acompañante. Sin tal software para el ME2, no hay nada a lo que aplicar ingeniería inversa para descubrir cómo comunicarse con el dispositivo. Incluso después de verificar Wayback Machine y bjiru, aparentemente no sobrevivieron copias del software que se usaba para hablar con estos dispositivos. Creo que se llamaba ME2 Desktop Buddy, pero esa aplicación era independiente del cliente del juego que bjiru recuperó. El dispositivo portátil se expone a sí mismo como un dispositivo de almacenamiento extraíble, pero el contenido simplemente te dirige en línea para descargar el juego ME2, que ya no está disponible.
El camino a seguir está claro, ya que solo queda una opción: abrir el hardware.

El firmware principal del ME2 está almacenado en un SST39VF3201, un chip flash de 2 megapalabras (4 megabytes, con unidades direccionables de 16 bits). El microcontrolador principal está... bajo una dura capa de epoxy glob-top. Esto se conoce como chip-on-board (CoB) y suele ser una medida de ahorro de costos, pero tiene el efecto secundario de ocultar cualquier información de identificación sobre el circuito integrado interior. Un chip empaquetado normalmente tendrá marcas que lo identifiquen, al igual que el chip flash. Dado que los microcontroladores usados en dispositivos como estos a menudo contienen una ROM interna, es posible que partes o todo el código USB que quería aplicar ingeniería inversa estuviera en esa ROM. Tener ese código en ROM tiene el beneficio de permitir la recuperación de un dispositivo bloqueado o, si el fabricante así lo decide, la programación del dispositivo después del ensamblaje. Esa ROM existiría dentro de un chip que no tenía forma de identificar.
Recuperar los datos del chip flash es un proceso sencillo y bien documentado: desoldar el chip, colocarlo en un programador flash estándar como los de XGecu, y usarlo para volcar el contenido. Si también necesito información de la ROM del microcontrolador, eso es menos sencillo, pero aún es factible para un dispositivo como este donde es poco probable que haya protección. En el pasado, añadí código a la flash SPI de un Tamagotchi Pix que copiaría su ROM de arranque al espacio libre en el chip flash, que luego podía leer el mismo programador flash que usé para inyectar el código. Sin embargo, en ese caso, el microcontrolador estaba empaquetado correctamente y tenía información del modelo impresa, por lo que pude encontrar su hoja de datos para saber qué conjunto de instrucciones usaba y dónde estaba su ROM en el espacio de memoria. En este punto, no tenía ninguna de esa información para el misterioso chip-on-board del ME2.
A pesar de las incertidumbres, el único camino aparente a seguir desde aquí es desoldar el chip flash. También había comprado algunos zócalos para el chip flash con la esperanza de poder soldar uno en el PCB del dispositivo portátil. Esto me permitiría reprogramar el ME2 e iterar rápidamente si necesitaba escribir código para volcar la ROM interna del microcontrolador.
Desafortunadamente, no pude quitar el chip flash con un soldador sin dañar el chip. Para resolver este problema de habilidad después de múltiples intentos fallidos, compré una estación de retrabajo (efectivamente una pistola de calor que afirma poder alcanzar 500 °C) y quité el chip derritiendo la soldadura con aire caliente. Esto me permitió volcar el contenido de la flash sin problemas, pero reveló que realmente usar los zócalos que había comprado iba a estar más allá de mis capacidades. No solo tendría que soldar los 48 pines diminutos al PCB, sino que también tendría que hacerlo lo suficientemente rápido para evitar derretir el plástico de los zócalos. No tenía ni las herramientas ni la habilidad para lidiar con eso, así que si necesitaba la ROM, necesitaría otra estrategia.
El volcado se veía bien, sin embargo, y usando una herramienta que ya había construido específicamente para encontrar mapas de bits sin comprimir en volcados de firmware, pude encontrar imágenes que se mostrarían normalmente en el dispositivo:

He obtenido un volcado del firmware del chip flash, pero antes de que se pueda hacer ingeniería inversa seria, al menos necesito saber qué conjunto de instrucciones ejecuta el dispositivo. No había marcas en el hardware en sí, así que tendría que adivinarse. Intenté analizar el código en Ghidra, un desensamblador, descompilador y pesadilla chapucera de código abierto que me mantiene empleado, con casi todos los tipos de especificaciones de procesador que traía. ¿Alguna variante ARM? ¿Algún descendiente de 6502? ¿MIPS? ¿Literalmente cualquier otra cosa compatible con Ghidra? Todo un rotundo "no".