Technical Analysis of XBox Save Game Hack
DJPenguin writes "There is an excellent article at the XBox Linux Project that describes exactly how the XBox savegame hack works. It details how the author went to great lengths to hide exactly what was going on. It turns out the exploit code is hidden within an image of Tux himself!" An enlightening read, to say the least.
See IOCCC for true masters of making the code unreadable!
45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
From the looks of this article, they could probably make an entire course at a univeristy devoted to modding the xbox.
Paint.NET, a Free Image Editor, with Source Code Available!
The code was "hidden" in the jfif header, therefore does not qualify as steganography in my opinion. But I bet MS jumps all over this and gets stego banned.
continue praying... thank you holy tux, you defeated evil xbox with nothing more than a blink of your image. if possible reveal thy self in thy full glory and microsoft will treamble in your pressence.
Sorry for my ignorance, but why hide the code? If a true linux fanatic wants to spread the good word, so to speak, why bother with the whole encryption routine and fake JMP's? Why not just make the hack completely transparent so anyone can do it?
Why are you guys constantly trying to work against the hard-working software publishers at Microsoft?
Come on, guys - you know it's not right. Don't copy that floppy!
If anyone knows it would be intresting to hear the reason why.
The code is just brilliant. A lot of care was taken in the construction of this hack. No script kiddie is he.
It looks like it retrives the private key. That's interesting.
Napster-to-go says "Fill and refill your compatible MP3 player", which is a lie. It's not MP3. It's WMA with DRM.
"Can calc.exe add two pairs of hex octets?"
Yes.
Many calculations in computing are done in base 16 because it's convenient (each circuit is either on or off, two possibilities; 16 is 2 to the 4th power, while 10 is not an even power of two).
In base 16 notation, the digits usually are:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f
So, 15 in decimal (base 10, what you're used to) is f in hexadecimal (base 16, more convenient for computing due to on/off nature of electricity, since 16 is an even power of 2).
And just as 9 + 1 = 10 (reach the highest digit? carry the one and begin with a zero again in the next column) f + 1 = 10 (reach the highest digit, carry the one and begin with a zero again in the next column).
Other basic hex math for example:
9 + 1 = a
9 + 2 = b
f0 + 1 = f1
ff + 1 = 100
a + 1 = b
b + 2 = d
And so on.
The 0x is a holdover from C programming, prefixing a value in c by 0x indicates that it is a hexidecimal (base 16) number and not a decimal (base 10) number.
STOP . AMERICA . NOW
Don't Copy That Floppy
...when you can skim that article and not need to look anything up.
Beep beep.
Windows XP is stored in tux
--
microsoft takes the open PC standard, cripples it, makes it so that you can't upgrade it, you cant WRITE code for it without paying them royalties, you cant RUN code on it without paying them, and puts their logo on the front. If you even try to open this crippled PC, your warranty is void, if you open up and play around with this crippled PC that you payed for and you own ("hack") you are breaking the law. Dont even think about selling modifications to this crippled PC. You will be put in prison with all the rapists and murderers and other menaces to society.
The scariest part? Is that in 10 years, we wont be talking about a console. This is the future of the PC.
You might be right about this being a spy vs. spy thing because the stakes are so huge. This could mean that rival Console makers are actually hacking the X-box to diminish it's threat. That could be a reason why this hack was so well done!
You brought up an excellent point!
... Should go down in the hall of fame right next to the guy who figured out Whippits (sp?). To misquote Dennis Leary, these kids should be working for the Space Program!
...Also, I didn't know Buggalo could fly.
for buffer overflows or what??
Seems that's the number one way to whack an M$ system...
I just loved that. I think the kids were using and Apple GS. I mean can I say that here?
This is interesting in that is predates the major wave of open source that we can freely copy.
Its like a receipt, but a deceipt is proof that you didn't purchase something.
I'm no programmer, but it seems they overflow a buffer used in loading saved games to mount the saved game as the d drive and then run a program off of it. This can then copy the modified files used to boot linux on an unmodified xbox to the hard drive.
I do security
You say putting program code in contents of jpeg (despite the fact it could work quite elsewhere just as well) is just a common practice?
45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
... that I didn't understand.
I didn't have to look anything up, though...
I know Assembly, and 80x8n assembly, especially. So that was no problem. I could follow the basic plot; I didn't bother to try to read most of the code, but when I did, it wasn't hard to read. The article was pretty good that way.
But it looks to me like the article really didn't tell how the 007 Save Game was hacked. Rather, the article says "yeah it was hacked, and here's the neat part." But that's where it stops.
There isn't enough info here to reproduce it, unless you already are into hacking the XBox.
But that said, I wonder why [and maybe someone who does understand this hack can explain] the XBox-Linux people at sourceforge don't rewrite their install CDs, and give instructions, to allow a person to use this weakness to install Linux from a single CD.
Could it be that this hack really isn't "out there" yet? That the "Free the XBox" hackers are actually still in negotiations with Microsoft [or with their concrete boots at the bottom of the river]?
Correct Horse Battery Staple: 72 bits of entropy. Enter "Correct H" into google. When it generates the phrase, that's
There are plenty of graphical calculators for Linux.. personally, I use python like the parent or for very simple integer calculations, bc or dc.
The modification of the public key to make it divisible by three was absolutely beautiful. Huge props to the unknown hacker.
Conoles will stay consoles. They will be made to play purely games and nothing else. This is what people want to buy, and they're showing it with their pocketbooks right now. Look at how many dedicated gaming devices Sony and Nintendo have sold compared to Microsofts try-and-do-everything Box. The numbers speak for themselves.
The article says:
But you may not know the actual section he's referring to. Here it is:
And (a)(1)(A) is the bit that everyone calls to mind when they think of the DMCA:
(full text of DMCA)
IANAL, but I think this means that if you crack the protection on something simply so you can understand (and document) the program so it will work with other programs and files, then that's not considered a violation of the DMCA.
-jh
Excellent analysis...
Such obfuscated code could only be the prodcut of
A: a paranoid mind
B: someone on a mission to prevent their code from being exploited
C: both.
In the future, I would want to not be isolated from my friends in the Space Station.
I wish someone would answer this question too. I have to idea what the heck it's all about either.
>>> "%x"%(0xAD9+0x5EF)
'10c8'
Python. Ptuii!
% dc
16o16iAD9 5EF+p
10C8
^D
Eventually, I think all game consoles will have security keys like the Xbox.
Linux is cool, but not every computing device in the world needs to run it. Unlike servers and desktop PCs, game consoles are not mission critical for anything. These Linux hackers should leave the Xbox alone and devote some time to improving X performance on the desktop, or something else useful.
For hex addition, I sometimes use a chinese abacus. The chinese style has two top beads and 5 bottom beads (as opposed to the Japanese style which has 1 top bead and 4 bottom beads). One of the top beads and one of the bottom beads on a chinese abacus are never used for decimal addition (they are used for carries when multiplying). However, if you count each top bead as 5 and each bottom bead as 1, they add up to 15 - which works perfectly for addition in base 16 (just as the 1 top and 4 bottom add up to 9 for decimal addition). The beauty of adding on an abacus is that the answer appears as you "key" in the operands. No wasted keystrokes to type "+" or ENTER.
when you say "You know your a geek..."
Oh what about polish vodka?
Liberty freedom are no1, not dicks in suits.
What does this hack let you do?
Well, how about running the code of your choice an Xbox? How does that sound? (Hint: it used to be impossible without doing a hardware mod.)
Disclaimer: Since I don't own an Xbox, some of these details are a little sketchy and may be incorrect.
This hack lets you load unsigned software, such as Linux, of your choice onto an XBox, without using a mod-chip or making any hardware mods. Previously, you could only run software that is signed by Microsoft on an Xbox, unless you voided the warranty and made Xbox Live impossible by installing a mod-chip or flashing the BIOS.
You need a copy of 007: Agent of Fire. You load the "unsigned" (*) code, such as Linux, and a specially hacked 007: AUF savegame onto a special kind of memory card that connects to your PC.
You then fire up 007: AUF, and load the hacked savegame, which takes advantage of the buffer overflow exploit in order to load your "unsigned" code. This "unsigned" code could be Xbox Linux, XboxMediaPlayer, or any of the other homebrew projects out there for Xbox.
If you haven't heard of the open-source XboxMediaPlayer, it looks pretty sweet. It can play all kinds of audio and video files from your Xbox's hard drive or a streaming server, such as: WMV, ASF, WMA, VCD, SVCD, MPEG, JPEG, GIF, BMP, DivX, XVid, etc. It basically turns your Xbox into a cheap Media Centre PC (except for the TV recording part).
(*) Actually, according to the article, you have to sign the code yourself, but it's easy in this case, because of the way the exploit works.
The interesting bit should be how the dude discovered the overflow...not how it works.
Discovering an overflow in a controlled environment such as a console is no easy task. Console games don't usually crash - what indicated an overflow was present for exploiting?
After that, exploiting an overflow is really just a menial task. There really are only a few issues to differentiate each case - how long can the exploit string be before it overwrites something critical? Are certain characters not allowed in the string?
Beyond that, exploiting it is simple...
So, anybody know how that particular overflow was discovered?
woooohooooo i finally registered confucious says: "man who goes through airport door sideways , going to Bangkok."
"the universe is a figment of its own imagination" (play DAOC its good)
"if you count each top bead as 5 and each bottom bead as 1, they add up to 15"
What's interesting about that to me is, that's the way I learned abacus, and I've never considered any other representation of the beads... but until I read your post, I never made the connection between hexidecimal and the abacus.
Once upon a time, I knew division and multiplication algorithms for abacus. Now I'm going to have to dust off those memories and see if I can figure out rotate, shift, xor...
-fb Everything not expressly forbidden is now mandatory.
Were it not for HALO, DOA3 and DOAX, my X-Box would already be in my server closet running apache right now. In fact, I'm considering buying a second X-Box for just that... and maybe even a third one for a stand-alone firewall box. I've seen used X-Boxen around town for about $150 each. Thanks to the 007 hack which saves the trouble of mod-chipping, it's the best deal out there for a lightweight server.
Information wants to be anthropomorphized.