Web Analytics

Xbox_SMC

⭐ 58 stars Portuguese by Prehistoricman

🌐 Idioma

Xbox_SMC

Dumps do PIC16/Xyclops do Xbox original e bancos de dados do IDA com alguma engenharia reversa realizada.

Imagem do PIC16LC63A de um Xbox original

Gravação do Xyclops (XycloMod)

Veja
o diretório Xyclops e o README

Dumps

O arquivo .bin para cada dump de PIC tem os bytes invertidos para carregamento correto no IDA. Portanto, a primeira palavra da memória PIC é byte_0 + byte_1 << 8.

Os bancos de dados .idb do IDA possuem informações sobre variáveis e algumas observações no bloco de notas do banco de dados.

Veja esta página da wiki para uma análise das versões SMC: https://xboxdevwiki.net/Xboxen_Info

B2A

Dumpado de um Xbox DVT3. Mesma palavra de configuração que o P01. Também possui o ID do dispositivo gravado na área de configuração como 0000 0000 000B 002A, diferente dos PICs de produção.

Está completamente ausente o boot challenge.

D01

Dumpado de um Xbox XDK BETA 2. Idêntico ao P01, exceto pela ausência do boot challenge. A função para calcular a resposta esperada ao boot challenge ainda está lá, mas nunca é chamada.

DXF

Dumpado de um kit de depuração XDK D2. Muito semelhante ao D01, mas com lógica de bandeja, superaquecimento e boot ligeiramente diferentes. Boot challenge ausente da mesma forma que no D01.

D2E

Dumpado de um kit de desenvolvimento Tuscany (v1.6). O chip Xyclops está marcado como X01202-001, e está ausente a linha A-A02 ou A-B01 que as unidades de varejo possuem.

O código serial de depuração em FC00 corresponde ao dump de varejo P2L. Existe um padrão estranho de dados de 0x4000 a 0xFBFF.

P01

Dumpado de um Xbox v1.0. A palavra de configuração é 0x86: Um valor de configuração de 0x3FB6 é adequado para clones de SMC para que não tenham proteção de código habilitada.

P11

Dumpado de um Xbox v1.3. Mesma palavra de configuração que o P01.

Há algumas pequenas alterações no P11 em relação ao P01, incluindo um comando SMBus extra (gravar 0x22), diferentes prioridades de LED e temporizações mais relaxadas para inicialização.

Verifiquei dumps embaralhados do v1.3 contra o v1.4 e eles coincidem. Isso significa que é altamente provável que tenham o mesmo programa.

P2L

Extraído de um Xbox v1.6. Revisão Xyclops A-A02. Contém código Intel 8051, mas possui muitos registradores de função especial cuja função é desconhecida.

A serial de depuração é alimentada pelo código em FC00. Parece um depurador rudimentar que pode pausar a execução, despejar dados e escrever em registradores/RAM.

Dumping do Xyclops

O chip Xyclops possui 3 pinos para 'depuração': TXD (pino 64), RXD (pino 63) e DEBUG (pino 29). Coloque o pino DEBUG em nível alto para habilitar a porta serial nos pinos TX e RX. A serial opera a 9600 baud.

O protocolo é baseado em comandos de 4 bytes que normalmente estão no formato

O comando 0x14 despeja 64 bytes de dados da BIOS por vez e o 0x15 despeja 64 bytes de dados do programa SMC por vez. Um dump do Xyclops, P2L.bin, está incluído no repositório. xyclops_dumper.py também está incluído para você fazer o dump da sua própria máquina.

Metodologia de dumping do PIC

Relato completo em https://wiki.recessim.com/view/PIC_Burnout

O PIC tem a proteção de código habilitada, então todos os dados são lidos como 0000. Usei um truque para obter dados embaralhados de saída, descobri o algoritmo de embaralhamento usando um chip sacrificial, e depois usei um tipo de exploit para modificar os dados da ROM e corrigir alguns bits para valores conhecidos. Assim, posso extrair as informações necessárias dos múltiplos dumps embaralhados para reconstruir os dados originais.

PICProgrammer

PICProgrammer é um dos vários projetos Arduino para o RP2040 que utilizei em minha pesquisa. Ele fornece uma interface simples de linha de comando para executar operações ICSP (programação serial em circuito) no PIC. Isso é preferido em relação ao uso de um programador dedicado como o PICkit devido à sua flexibilidade e à possibilidade de fazer coisas que o fabricante não pretendia.

Você deve ter um bom entendimento de eletrônica e programação antes de usar isso, e analisar cuidadosamente o que cada comando faz antes de executá-los.

--- Tranlated By Open Ai Tx | Last indexed: 2025-09-20 ---