« Arquitetura do PlayStation 2 (index)

Arquitetura do PlayStation 2

Chapter 10: Anti-Pirataria e Homebrew


Índice

  1. Proteção contra cópia
  2. Vulnerabilidades descobertas
    1. Modchips
    2. Trapaças
    3. Disc swapping (troca de discos)
    4. Overflow do PS1
  3. Um desbloqueio de software semi-permanente
  4. Mais truques de disco

Há bastante coisa para falar aqui, então vamos começar com o leitor de DVD.

Proteção contra cópia

Essa seção foi particularmente preocupante para os estúdios de jogos, visto que este console usava um formato de disco acessível para guardar os jogos e havia um grande risco de pirataria.

Image
Essa tela de erro pode aparecer se o leitor está com defeito... ou se uma cópia pirata foi inserida.

Quando o SO carrega um jogo, ele o faz enviando comandos específicos para o leitor de DVD. Os comandos especificamente usados para ler o conteúdo de um jogo comportavam-se de forma muito diferente dos comandos padrões de DVD (i.e. para ler um filme em DVD). Acontece que os jogos autorizados contêm um 'arquivo de mapeamento' fora de alcance na seção interna do disco que indexa o sistema de arquivos por nome, posição e tamanho. Quando o DVD é solicitado a ler um disco de jogo, ele sempre vai navegar pelo disco usando um arquivo de mapeamento, o que significa que uma cópia pirata de um jogo, que não poderia incluir o arquivo de mapeamento, será impossível de ser lida. Isso foi complementado por um sistema de bloqueio de região que impedia que jogos importados funcionassem em um console de região diferente.

Vulnerabilidades descobertas

Tendo explorado as partes mais críticas deste console, vamos dar uma olhada em vários métodos descobertos que poderiam contornar os mecanismos de proteção.

Modchips

Como qualquer outro console de sua geração (e da geração passada) que usava um sistema baseado em disco, era uma questão de tempo até que outras empresas realizassem engenharia reversa do subsistema de DVD. O objetivo aqui era encontrar uma vulnerabilidade (exploit) útil que poderia forçar o leitor a navegar pelos arquivos do sistema sem a necessidade de um arquivo de mapeamento fora de alcance.

Isso eventualmente aconteceu na forma de modchips, o que também contornou as restrições de bloqueio de região.

Trapaças

Junto com os modchips, que exigiam habilidades de solda para instalar, discos não autorizados porém 'legítimos' surgiram no mercado. Estes permitiam contornar a proteção de região e o uso de trapaças no jogo por meio de pequenas alterações no SO. Além disso, 'discos de trapaça' tinham a vantagem de não precisar modificar o console. Suponho que o melhor exemplo a ser mencionado é o CodeBreaker.

Disc swapping (troca de discos)

No meio dos últimos avanços, surgiu mais um truque. Desta vez, explorando a forma como o leitor lida com setores defeituosos. Swap Magic parece como um outro disco 'legítimo', mas o 'jogo' presente nele diz ao DVD para ler um executável inexistente localizado deliberadamente em um setor defeituoso, o que interrompe o leitor por completo . Essa janela de oportunidade permitiu que usuários trocassem o disco por um não-legítimo. Então o Swap Magic, ainda carregado em memória, inicializa o executável principal do novo disco, carregando um jogo de verdade no final do processo. Tudo isso é feito enquanto o leitor de CD/DVD ainda acredita que um disco legítimo foi inserido.

Isso não requer necessariamente uma alteração no console. Porém, dependendo do modelo, a carcaça externa do PS2 terá que ser manipulada para bloquear os sensores de remoção de mídia do leitor. Em alguns casos, colocar algodão em alguns lugares será o suficiente.

Overflow do PS1

O PS2 guarda um arquivo de base de dados chamado TITLE.DB no Memory Card que contém informações usadas para otimizar a emulação de jogos de PS1 . Quando um jogos de PS1 é inserido, o SO busca o arquivo de base de dados e carrega o arquivo inteiro em memória em um endereço fixo (strike um). O analisador de informações é implementado utilizando o strncpy(), uma função em C que copia strings (cadeia de caracteres) de um lugar para outro.

Para pessoas familiarizadas com C, vocês provavelmente já adivinharam onde eu vou chegar com isso. O fato é que strncpy() não sabe o quão longo é uma string, então a menos que ela seja finalizada (colocando \0 no final da cadeia) o processo de cópia vai continuar 'para sempre' (com resultados imprevisíveis!). Felizmente, essa função contém um parâmetro opcional que especifica o número máximo de bytes a serem copiados, protegendo a cópia de buffer overflows. Por mais ridículo que possa parecer, a Sony não usou esse parâmetro, embora cada entrada da base de dados tenha um tamanho fixo de 256 bytes (strike dois).

Após uma inspeção mais detalhada da RAM, ocorre que TITLE.DB é copiado próximo de um registrador salvo, o $ra, que indica o endereço de retorno após a função atual em execução finalizar (strike três), o que levou à vulnerabilidade conhecida como The independence exploit: faça um TITLE.DB com uma string comprida, inclua um executável dentro dele e faça a string de forma que o $ra seja sobrescrito para apontar para o executável. Se você conseguir enviar este arquivo para seu Memory Card (através de outro exploit ou um adaptador USB no PC) você conseguiu um Homebrew launcher simplificado.

Após o lançamento das revisões slim, a vulnerabilidade foi corrigida (me pergunto como). Curiosamente, este caso não foi o último descuido grave que expôs código desleixado.

Um desbloqueio de software semi-permanente

Há algum tempo, foi descoberto que a BIOS deste console pode ser atualizado usando o Memory Card, e que essa função nunca foi usada na prática, mas também não foi removida (pelo menos durante boa parte do período de vida do console). Com isso, hackers perceberam que se eles encontrassem um jeito de instalar softwares específicos no Memory Card, então a BIOS sempre iria carregá-los durante a inicialização. Essa descoberta levou ao Free MCBoot, um programa apresentado ao console como 'dados de atualização' que substitui o shell original com um que pode executar Homebrew.

Tenha em mente que essas alterações não são permanentes, um Memory Card com o 'Free MCBoot' instalado deve ser inserido antes da inicialização do console. Além disso, este software precisa ser instalado de alguma forma, então um outro exploit (ex: disc swapping) é necessário para inicializar o instalador.

Mais truques de disco

No mesmo ano após o lançamento do Free MCBoot, um outro truque foi descoberto: Disfarçar jogos como se fossem filmes em DVD, permitindo efetivamente que cópias não autorizadas de jogos possam ser lidos sem a necessidade de um modchip.

Isso apenas exigia a alteração da imagem do jogo com a adição de metadados e partições somente usadas por filmes em DVD. Então, quando a cópia gravada é inserida no console, o leitor não irá rejeitá-lo, mas o jogo também não será executado. Porém, com a ajuda de um programa Homebrew chamado ESR, o jogo consegue ser inicializado.


Previous: 9. Jogos

Next: 11. Isso é tudo pessoal


Rodrigo Copetti © 2026 RSS Feed

Mudar para a edição moderna

Início · Artigos · Suporte · Sobre o autor · Sobre o site