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.

154<br />

<strong>Hacking</strong> <strong>the</strong> <strong>Xbox</strong>: An Introduction to Reverse Engineering<br />

Figure 10-1: The solderless Xodus/Matrix alternate firmware device, showing<br />

<strong>the</strong> spring-loaded “pogo-pin” contacts that enable a solderless connection to<br />

<strong>the</strong> LPC connector on <strong>the</strong> <strong>Xbox</strong> mo<strong>the</strong>rboard.<br />

Let’s make <strong>the</strong> concept of bottom- and top-relative addressing more<br />

concrete with an example. The addresses for <strong>the</strong> 16 MB boot ROM area in<br />

<strong>the</strong> <strong>Xbox</strong> spans from 0xFF00.0000 to 0xFFFF.FFFF. Programs on <strong>the</strong><br />

<strong>Xbox</strong> that use bottom-relative addressing will compute addresses using<br />

0xFF00.0000 + offset (bottom address plus offset), while programs<br />

that use top-relative addressing will use 0xFFFF.FFFF – offset (top<br />

address minus offset). Suppose a 1 MB boot ROM is installed in <strong>the</strong> <strong>Xbox</strong>.<br />

This means that <strong>the</strong> processor will see 16 identical copies of this 1 MB ROM<br />

spread evenly over <strong>the</strong> 16 MB ROM address space. In o<strong>the</strong>r words, <strong>the</strong><br />

contents of <strong>the</strong> boot memory appear identical for every address A +<br />

0xFF00.0000 + n * 0x0010.0000, n = 0 through 15, A = 0<br />

through 0x000F.FFFF. As a result, programmers can pack data into <strong>the</strong><br />

smaller 1 MB boot ROM using both top- and bottom-relative addressing<br />

without having to change any of <strong>the</strong>ir code: A valid copy of <strong>the</strong> ROM image

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

Saved successfully!

Ooh no, something went wrong!