Como hackear a proteção contra cópia do console Sega Dreamcast


Após o lançamento do DOOM Black Book, fui de férias ao Japão, onde consegui jogar Ikaruga em uma verdadeira máquina de arcade na sala de jogos Taito HEY no bairro de Akihabara em Tóquio. Essa experiência reviveu meu interesse no mais recente console de videogame SEGA - Dreamcast.

Na rede, você pode encontrar muitos documentos que facilitam bastante o processo de estudo do problema. Existem dois excelentes recursos que podem atualizar rapidamente qualquer pessoa: o maravilhoso site de Marcus Comstedt, que descreve tudo até os registros da GPU, e o recurso de Jockel : "Vamos criar um jogo para o Sega Dreamcast do zero" .

Enquanto eu estudava o carro, descobri uma história incrível sobre como os hackers rapidamente quebraram a proteção de cópias de jogos e arruinaram as mais recentes esperanças de hardware da SEGA.

Primeiro nível de proteção: GD-ROM


No papel, a proteção contra cópia do SEGA Dreamcast parecia muito forte. Os jogos foram entregues em um meio especial chamado GD-ROM, que somente a SEGA poderia produzir. GD significa "Gigabyte Disc" ("gigabyte disc"), ou seja, seu aumento na densidade de gravação forneceu um volume máximo de 1 GB, muito mais do que as capacidades de um CD-ROM convencional (700 MB).


imagem

O GD-ROM tinha as mesmas dimensões físicas que o CD-ROM, mas no nível macro, consistia em duas áreas distinguíveis a olho nu.

A primeira zona (escura) é uma região de baixa densidade compatível com CD-ROM que contém até 35 MB. Ele continha uma faixa de áudio de voz lembrando ao usuário que o conteúdo do disco era destinado ao SEGA Dreamcast, e não a um CD player [1] . Além disso, o desenvolvedor adicionou uma faixa com arquivos de texto, por exemplo, informações sobre direitos autorais e, às vezes, materiais promocionais, como arte do jogo.

A área de alta densidade (luz) foi armazenada até 984 MB [2] e todo o conteúdo do jogo estava localizado nela.

Parecia impossível para os hackers ejetar o jogo do disco e gravá-lo novamente para distribuição.

Inicializando a partir do GD-ROM: IP.BIN e 1ST_READ.BIN


Antes de falarmos sobre como os piratas conseguiram copiar jogos, precisamos entender a sequência de carregamento. O Dreamcast não possui um sistema operacional. Existe um equívoco popular de que ele usou o Windows CE, mas, na verdade, o Microsoft OS era apenas uma biblioteca estática adicional que os desenvolvedores do Dreamcast podiam conectar para usar o DirectX, DirectInput e DirectSound [3] . Em alguns jogos, o WinCE foi usado [4] , mas na maioria (por exemplo, Ikaruga) não foi usado. Independentemente do que o desenvolvedor usou, um jogo com um sistema operacional totalmente conectado e o Dreamcast sempre começou da mesma maneira.

Durante o uso normal e o lançamento do jogo oficial no recém-ativado Dreamcast, o BOOTROM foi lançado, carregando o bootstrap do GD-ROM na RAM. Este pequeno programa, localizado na última faixa GD-ROM e conhecido pela comunidade como "IP.BIN", exibia uma tela licenciada pela SEGA e executava dois níveis de inicialização para configurar registros de hardware, criar uma pilha de CPU e inicializar o VBR [5] .

Mais importante, IP.BIN continha o nome do executável do jogo. Esse nome foi pesquisado no sistema de arquivos GD-ROM e carregado na RAM em 0x8C010000, após o qual o programa foi transferido para lá. Normalmente, o executável foi nomeado "1ST_READ.BIN".


Depois que a CPU foi para o endereço 0x8C010000, o jogo começou como deveria.

Segundo nível de proteção: scrambler ransomware


A possibilidade teórica de hackers surgiu devido à capacidade aparentemente insignificante do Dreamcast de inicializar não a partir do GD-ROM, mas do CD-ROM. Inicialmente, essa funcionalidade chamada “MIL-CD” foi concebida para adicionar funções multimídia aos CDs de música, mas praticamente não foi usada, com exceção de sete aplicativos de karaokê.

Os engenheiros da SEGA entenderam que o carregamento de um MIL-CD poderia ser usado como um vetor de ataque e, portanto, adicionaram proteção. Quando o console reconheceu o CD-ROM, o BOOTROM carregou o IP.BIN da maneira usual, mas criptografou 1ST_READ.BIN, à primeira vista aleatoriamente. O executável de trabalho se transformou em um hash caótico que causou o congelamento do console.


Desse ponto de vista, o console parecia estar protegido de forma confiável. O Dreamcast pode reconhecer uma cópia pirateada do jogo, corromper o arquivo executável durante o processo de download e derrotar os piratas.

Sirva minha espada longa!


O problema com o arquivo danificado foi resolvido quando, no final de 1999, o Katana SDK (Sega SDK oficial para Dreamcast) foi roubado pela equipe de hackers da Utopia [6] . Verificou-se que o embaralhador nada mais era do que uma implementação do princípio "segurança através da obscuridade". O SDK continha um embaralhador reverso, que transformava o executável correto em um "hash reverso", que novamente se tornou um executável após carregar e embaralhar com o console do Dreamcast ao inicializar a partir de um CD-ROM.


Recuperando um jogo com seu GD-ROM


O SDK roubado era o necessário para todos os piratas. Graças à capacidade de executar código em uma máquina, o Dreamcast agora pode ser usado não como um console de jogos, mas como uma unidade GD-ROM. O “cabo do codificador” do SDK [7] tornou possível conectar o console a um PC e estabelecer uma conexão física. Para o console despejar o conteúdo das faixas GD, um arquivo executável especial foi gravado. Em seguida, foi reorganizada e gravada em um CD-ROM para gerar todos os 1 GB de dados pela porta serial do console. Foi um processo propenso a erros que levou até 18 horas [8] [9] . O resultado foi salvo em um formato ".gdi" especialmente criado.

  ikaruga.gdi 153 bytes
 track01.bin 13 982 640 bytes
 track02.raw 2.088.576 bytes
 track03.bin 1 185 760 800 bytes 

Um fato interessante : você pode ver que a quantidade total de dados não é de 1 GB, como mencionado acima, mas de 1,2 GB. Isso ocorre porque os setores GD-ROM de 2352 bytes seguem o formato Red Book, que usa 12 bytes para sincronização, 4 bytes para o cabeçalho, 2048 bytes para a carga útil e 288 bytes para o Código de detecção de erros / Código de correção de erros [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 

Como ajustar um GD-ROM de 1000 megabytes a um CD-ROM de 700 megabytes


Para ajustar o jogo em um CD-ROM de 700 megabytes, os recursos do jogo foram reformulados. O sistema de arquivos ISO-9660 usado no GD-ROM facilitou a alteração da discretização de vídeos e músicas, além de excluí-los completamente. No entanto, para a maioria dos jogos, um processo tão complexo não era necessário porque eles não ocupavam os 1 GB inteiros. Por exemplo, o Ikaruga do Treasure ocupava apenas 150 MB e a maior parte do conteúdo era preenchida com zeros. Nesses casos, basta editar os dados de preenchimento.

De fato, o ISO-9660 é um formato tão conhecido que até os scripts Python (por exemplo, gditools.py ) foram escritos para estudar o conteúdo dos arquivos .gdi.

Embalagem e distribuição


As duas últimas etapas do processo foram a codificação reversa 1ST_READ.BIN e o empacotamento de todas as informações em um arquivo .cdi para que o DiscJuggler pudesse gravar a imagem no CD-R. O resultado obtido funcionou sem problemas em qualquer Dreamcast de baunilha sem a necessidade de um chip de modificação.

Reação e consequências da SEGA


A SEGA lançou rapidamente a segunda versão do console DC com o MIL-CD completamente desativado, mas o dano já foi feito. Após uma queda catastrófica na receita e o lançamento do PS2 concorrente, os desenvolvedores abandonaram o Dreamcast e a SEGA deixaram o desenvolvimento de equipamentos, concentrando-se inteiramente na criação de software.

Referências


[1] Fonte: SEGA GD Workshop
[2] Fonte: segaretro.org: GD-ROM
[3] Fonte: Microsoft anuncia o Windows CE Toolkit para Dreamcast
[4] Fonte: jogos Dreamcast utilizando Windows CE
[5] Fonte: IP.BIN e 1ST_READ.BIN
[6] Fonte: Vamos construir um jogo Sega Dreamcast do zero
[7] Fonte: adaptador serial para PC
[8] Fonte: Um exame mais preciso e aprofundado da segurança do Dreamcast
[9] Fonte: As formas mais rápidas foram projetadas por último, usando o conector de banda larga da DC
[10] Fonte: Dreamcast Mito: Capacidade de armazenamento de GD-ROM

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


All Articles