C贸mo hackear la protecci贸n de copia de la consola Sega Dreamcast


Despu茅s del lanzamiento del DOOM Black Book, me fui de vacaciones a Jap贸n, donde logr茅 jugar a Ikaruga en una m谩quina arcade real en la sala de juegos Taito HEY en el barrio Akihabara de Tokio. Esta experiencia nuevamente revivi贸 mi inter茅s en la 煤ltima consola de videojuegos de SEGA: Dreamcast.

En la red puede encontrar muchos documentos que facilitan enormemente el proceso de estudiar el problema. Hay dos recursos excelentes que pueden actualizar r谩pidamente a cualquiera: el maravilloso sitio web de Marcus Comstedt, que describe todo hasta los registros de la GPU, y el recurso de Jockel " Creemos un juego para Sega Dreamcast desde cero" .

Mientras estudiaba el auto, descubr铆 una historia incre铆ble sobre c贸mo los hackers rompieron r谩pidamente la protecci贸n de copias de juegos y arruinaron las 煤ltimas esperanzas de hardware de SEGA.

Primer nivel de protecci贸n: GD-ROM


En el papel, la protecci贸n de copia para SEGA Dreamcast se ve铆a muy fuerte. Los juegos se entregaron en un medio especial llamado GD-ROM, que solo SEGA pod铆a producir. GD significa "Gigabyte Disc" ("disco gigabyte"), es decir, su mayor densidad de grabaci贸n proporcion贸 un volumen m谩ximo de 1 GB, que era mucho m谩s que las capacidades de un CD-ROM convencional (700 MB).


imagen

GD-ROM ten铆a las mismas dimensiones f铆sicas que el CD-ROM, pero a nivel macro, consist铆a en dos 谩reas distinguibles a simple vista.

La primera zona (oscura) es una regi贸n de baja densidad compatible con CD-ROM que contiene hasta 35 MB. Conten铆a una pista de audio de voz que le recordaba al usuario que los contenidos del disco estaban destinados a SEGA Dreamcast, y no a un reproductor de CD [1] . Adem谩s, el desarrollador agreg贸 una pista all铆 con archivos de texto, por ejemplo, informaci贸n de derechos de autor y, a veces, materiales promocionales, por ejemplo, arte del juego.

El 谩rea de alta densidad (luz) se almacen贸 hasta 984 MB [2] y todo el contenido del juego se encuentra en 茅l.

A los piratas inform谩ticos les parec铆a imposible expulsar el juego del disco y volver a grabarlo para su distribuci贸n.

Arranque desde GD-ROM: IP.BIN y 1ST_READ.BIN


Antes de hablar sobre c贸mo los piratas lograron copiar juegos, necesitamos entender la secuencia de carga. Dreamcast no ten铆a un sistema operativo. Existe una idea err贸nea popular de que usaba Windows CE, pero de hecho, el sistema operativo de Microsoft era solo una biblioteca est谩tica adicional que los desarrolladores de Dreamcast pod铆an conectar para usar DirectX, DirectInput y DirectSound [3] . En algunos juegos, se utiliz贸 WinCE [4] , pero en la mayor铆a (por ejemplo, Ikaruga) no se us贸. Independientemente de lo que usara el desarrollador, un juego con un sistema operativo totalmente conectado y Dreamcast siempre comenz贸 de la misma manera.

Durante el uso normal y el lanzamiento del juego oficial en el Dreamcast recientemente activado, se lanz贸 BOOTROM, cargando el programa de arranque desde el GD-ROM a la RAM. Este peque帽o programa, ubicado en la 煤ltima pista de GD-ROM y conocido por la comunidad como "IP.BIN", mostr贸 una pantalla con licencia SEGA y realiz贸 dos niveles de arranque para configurar registros de hardware, crear una pila de CPU e inicializar VBR [5] .

M谩s importante a煤n, IP.BIN conten铆a el nombre del ejecutable del juego. Este nombre se busc贸 en el sistema de archivos GD-ROM y se carg贸 en la RAM a 0x8C010000, despu茅s de lo cual el programa se transfiri贸 all铆. T铆picamente, el ejecutable se llamaba "1ST_READ.BIN".


Despu茅s de que la CPU fue a la direcci贸n 0x8C010000, el juego comenz贸 como deber铆a.

Segundo nivel de protecci贸n: codificador ransomware


La posibilidad te贸rica de hackear surgi贸 debido a la capacidad aparentemente insignificante de Dreamcast para arrancar no desde GD-ROM, sino desde CD-ROM. Inicialmente, esta funcionalidad llamada "MIL-CD" fue concebida para agregar funciones multimedia a los CD de m煤sica, pero pr谩cticamente no se us贸, con la excepci贸n de siete aplicaciones de karaoke.

Los ingenieros de SEGA entendieron que cargar un MIL-CD podr铆a usarse como un vector de ataque, por lo que agregaron protecci贸n. Cuando la consola reconoci贸 el CD-ROM, BOOTROM descarg贸 IP.BIN de la manera habitual, pero cifr贸 1ST_READ.BIN, a primera vista al azar. El ejecutable de trabajo se convirti贸 en un hash ca贸tico que hizo que la consola se congelara.


Desde este punto de vista, la consola parec铆a estar protegida de manera confiable. Dreamcast podr铆a reconocer una copia pirateada del juego, corromper el archivo ejecutable durante el proceso de descarga y derrotar a los piratas.

隆Sirve mi espada larga!


El problema con el archivo da帽ado se resolvi贸 cuando a finales de 1999 el equipo de piratas inform谩ticos Utopia rob贸 el Katana SDK (Sega SDK oficial para Dreamcast) [6] . Result贸 que el codificador no era m谩s que una implementaci贸n del principio de "seguridad a trav茅s de la oscuridad". El SDK conten铆a un codificador inverso, que convirti贸 el ejecutable correcto en un "hash hacia atr谩s", que nuevamente se convirti贸 en un ejecutable despu茅s de cargar y codificar con la consola Dreamcast al arrancar desde un CD-ROM.


Recuperando un juego con su GD-ROM


El SDK robado era todo lo que los piratas necesitaban. Gracias a la capacidad de ejecutar c贸digo en una m谩quina, Dreamcast ahora podr铆a usarse no como una consola de juegos, sino como una unidad GD-ROM. El "cable codificador" del SDK [7] hizo posible conectar la consola a una PC y establecer una conexi贸n f铆sica. Para que la consola descargue el contenido de las pistas de GD, se escribi贸 un archivo ejecutable especial. Luego se volvi贸 a codificar y se grab贸 en un CD-ROM para generar todos los 1 GB de datos a trav茅s del puerto serie de la consola. Fue un proceso propenso a errores que tom贸 hasta 18 horas [8] [9] . El resultado se guard贸 en un formato ".gdi" creado especialmente.

  ikaruga.gdi 153 bytes
 track01.bin 13982 640 bytes
 track02.raw 2,088,576 bytes
 track03.bin 1 185 760 800 bytes 

Un hecho interesante : puede ver que la cantidad total de datos no es 1 GB, como se mencion贸 anteriormente, sino 1.2 GB. Esto se debe a que los sectores de GD-ROM de 2352 bytes siguen el formato del Libro Rojo, que utiliza 12 bytes para la sincronizaci贸n, 4 bytes para el encabezado, 2048 bytes para la carga 煤til y 288 bytes para el C贸digo de detecci贸n de errores / C贸digo de correcci贸n de errores [10 ]

  $ cat ikaruga.gdi 
 3
 1 0 4 2352 track01.bin 0
 2 5945 0 2352 track02.raw 0
 3 45000 4 2352 track03.bin 0 

C贸mo adaptar un GD-ROM de 1000 megabytes a un CD-ROM de 700 megabytes


Para ajustar el juego en un CD-ROM de 700 megabytes, se redise帽aron los recursos del juego. El sistema de archivos ISO-9660 utilizado en GD-ROM facilit贸 cambiar la discretizaci贸n de videos y m煤sica, as铆 como eliminarlos por completo. Sin embargo, para la mayor铆a de los juegos, no se requer铆a un proceso tan complejo porque no ocupaban el total de 1 GB. Por ejemplo, el Ikaruga de Treasure ocupaba solo 150 MB, y la mayor parte de su contenido estaba lleno de ceros. En tales casos, basta con editar los datos de relleno.

De hecho, ISO-9660 es un formato tan conocido que incluso los scripts de Python (por ejemplo, gditools.py ) se escribieron para estudiar el contenido de los archivos .gdi.

Empaque y distribuci贸n


Las 煤ltimas dos etapas del proceso fueron la codificaci贸n inversa 1ST_READ.BIN y el empaquetado de toda la informaci贸n en un archivo .cdi para que DiscJuggler pudiera grabar la imagen en CD-R. El resultado obtenido funcion贸 sin problemas en cualquier Dreamcast de vainilla sin la necesidad de un chip de modificaci贸n.

Reacci贸n y consecuencias de SEGA


SEGA lanz贸 r谩pidamente la segunda versi贸n de la consola DC con el CD de MIL deshabilitado por completo, pero el da帽o ya est谩 hecho. Despu茅s de una ca铆da catastr贸fica en los ingresos y el lanzamiento de la competencia PS2, los desarrolladores abandonaron Dreamcast y SEGA abandon贸 el desarrollo de equipos, centr谩ndose completamente en la creaci贸n de software.

Referencias


[1] Fuente: Taller SEGA GD
[2] Fuente: segaretro.org: GD-ROM
[3] Fuente: Microsoft anuncia el kit de herramientas de Windows CE para Dreamcast
[4] Fuente: juegos de Dreamcast que utilizan Windows CE
[5] Fuente: IP.BIN y 1ST_READ.BIN
[6] Fuente: Construyamos un juego Sega Dreamcast desde cero
[7] Fuente: Adaptador serial de PC
[8] Fuente: Una mirada m谩s precisa y profunda sobre la seguridad de Dreamcast
[9] Fuente: Las formas m谩s r谩pidas se dise帽aron en 煤ltimo lugar, utilizando el conector de banda ancha de DC
[10] Fuente: Dreamcast Mito: Capacidad de almacenamiento GD-ROM

Source: https://habr.com/ru/post/es433072/


All Articles