13.03.2013 Views

Hacking the Xbox

Hacking the Xbox

Hacking the Xbox

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapter 6 - The Best <strong>Xbox</strong> Game: Security <strong>Hacking</strong> 97<br />

Fur<strong>the</strong>rmore, <strong>the</strong> jam table opcodes seem to be corrupted. This phenomenon<br />

was corroborated by o<strong>the</strong>r hackers working on <strong>the</strong> problem,<br />

thus ruling out a code translation error. Clearly, <strong>the</strong>re is more to <strong>the</strong><br />

<strong>Xbox</strong> than meets <strong>the</strong> eye.<br />

Theories and rumors started to emerge to explain this strange behavior.<br />

Some of <strong>the</strong> popular <strong>the</strong>ories included:<br />

• Address and/or data line scrambling. Somewhere, <strong>the</strong> address or<br />

data lines were being inverted or permuted with some 1:1 mapping<br />

function. The scrambling function could be programmed into <strong>the</strong><br />

chipset as part of <strong>the</strong> initialization procedure, so that <strong>the</strong> initial<br />

boot block would read like plaintext while <strong>the</strong> rest of <strong>the</strong> data<br />

would be scrambled.<br />

• Secondary crypto processor. Ano<strong>the</strong>r processor on <strong>the</strong><br />

<strong>Xbox</strong> was actually handling <strong>the</strong> <strong>Xbox</strong>’s initialization, and <strong>the</strong> boot<br />

code in <strong>the</strong> ROM is bogus.<br />

• Boot code contained in <strong>the</strong> processor. The processor is<br />

actually initialized by a chunk of code sitting on <strong>the</strong> processor die,<br />

and <strong>the</strong> boot code in <strong>the</strong> ROM is bogus.<br />

• Boot code contained in <strong>the</strong> chipset. The processor<br />

functions identically to a standard Pentium, but <strong>the</strong> chipset contains<br />

boot code that overrides <strong>the</strong> bogus code inside <strong>the</strong> ROM.<br />

For almost all of <strong>the</strong>se <strong>the</strong>ories, <strong>the</strong> only way to prove or disprove <strong>the</strong>m is<br />

to perform experiments on <strong>the</strong> hardware. For example, in order to ensure<br />

that <strong>the</strong> SMC (System Management Controller, an 8-bit self-contained<br />

processor that is always on when <strong>the</strong> <strong>Xbox</strong> is plugged in) played no role in<br />

<strong>the</strong> secure boot sequence of <strong>the</strong> machine, hackers captured traces of <strong>the</strong><br />

waveforms on all of <strong>the</strong> SMC’s pins and analyzed <strong>the</strong>m against <strong>the</strong> expected<br />

sequence of events if <strong>the</strong> SMC were to play a crucial role in machine<br />

initialization.<br />

A crucial observation from a fellow hacker was that <strong>the</strong> <strong>Xbox</strong> booted<br />

perfectly even when <strong>the</strong> reset vector code at 0xFFFF.FFF0 was changed.<br />

One would expect that if <strong>the</strong> first instruction executed by <strong>the</strong> processor at<br />

0xFFFF.FFF0 were corrupted, <strong>the</strong>n <strong>the</strong> machine would crash. Ra<strong>the</strong>r, <strong>the</strong><br />

machine operated flawlessly. This observation was verified by a set of<br />

experiments where various parts of <strong>the</strong> FLASH ROM were intentionally<br />

corrupted. The results were that corrupting surprisingly large regions of <strong>the</strong><br />

FLASH ROM had no effect on <strong>the</strong> booting of <strong>the</strong> <strong>Xbox</strong>. In particular, <strong>the</strong><br />

entire boot initialization sequence from 0xFFFF.FE00 to 0xFFFF.FFFF<br />

could be nulled out and <strong>the</strong> <strong>Xbox</strong> would boot just fine.<br />

This finding alone strongly supported <strong>the</strong> <strong>the</strong>ory of a bogus boot block in<br />

FLASH ROM. The question remained, however, about where <strong>the</strong> real boot<br />

code was stored. There were three options: in a secondary crypto-processor,<br />

in <strong>the</strong> processor, and in <strong>the</strong> chipset. The secondary crypto-processor <strong>the</strong>ory<br />

was discounted on <strong>the</strong> basis that <strong>the</strong>re were no chips on <strong>the</strong> mo<strong>the</strong>rboard<br />

that were powerful enough or active enough at boot time to play <strong>the</strong> role

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!