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.

164<br />

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

(Profile: Michael Steil, continued)<br />

[We’re] not “Anti-MS” or “MS-haters.” We dislike <strong>the</strong>ir market in<br />

strategy, so we have a rational reason to work against <strong>the</strong>m.<br />

Is <strong>the</strong>re anything more you’d like to say about <strong>the</strong> $200k prize<br />

for <strong>Xbox</strong>-Linux?<br />

I think that <strong>the</strong> award didn’t attract people that wanted to<br />

see some money: Now one month after <strong>the</strong> deadline, <strong>the</strong><br />

money still hasn’t been distributed yet and still not a single<br />

person has sent me a single question about when he will get<br />

<strong>the</strong> money. The award attracted <strong>the</strong> press; we got more publicity,<br />

and this way we got more hackers. But nobody did it<br />

because of <strong>the</strong> money. So we don’t want to be regarded as<br />

being paid for <strong>the</strong> job by Michael Robertson. A good proof is<br />

that we’re still all active after <strong>the</strong> deadline.<br />

Can you tell us more about your “MIST X-Code hack”?<br />

Some time after bunnie’s original hack, Andy extracted <strong>the</strong><br />

MCPX ROM completely and Steve, Paul , and I started to analyze<br />

<strong>the</strong> code, and I reverse-engineered <strong>the</strong> X-Code interpreter<br />

contained within it. When looking for bugs that could be used<br />

to escape <strong>the</strong> X-Code interpretation loop, I found that a part<br />

of <strong>the</strong> code had already been written with our attacks in mind.<br />

This is my original disassembly:<br />

cmp ebx, 80000880 ; ISA Bridge, MCPX disable?<br />

jnz short not_mcpx_disable<br />

; BUG: too specific: bits 24 to 30<br />

; undefined and ignored by PCI hardware!<br />

and ecx, not 2 ; clear bit 1 (MCPX ROM will be<br />

; turned off by setting bit 1)<br />

not_mcpx_disable:<br />

mov eax, ebx<br />

mov dx, 0CF8h<br />

out dx, eax ; PCI configuration address<br />

add dl, 4<br />

mov eax, ecx<br />

out dx, eax ; PCI configuration data<br />

jmp short next_instruction<br />

I had been working with “PCI configuration” before, <strong>the</strong>refore<br />

I knew that <strong>the</strong> test for <strong>the</strong> attack was too specific: Similar<br />

codes would do <strong>the</strong> same, but <strong>the</strong>y pass <strong>the</strong> test. So <strong>the</strong> MS<br />

developers had a good idea, but <strong>the</strong> implementation was<br />

wrong, thus telling us about <strong>the</strong>ir idea this way!<br />

I sent my idea to Andy, Steve, and Paul, and <strong>the</strong>y verified after<br />

a short time that 0x88000880 worked just as well as 0x80000880<br />

to turn off <strong>the</strong> MCPX ROM and exiting <strong>the</strong> interpreter by mapping<br />

<strong>the</strong> interpreter code out of memory!

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

Saved successfully!

Ooh no, something went wrong!