Announcement

Collapse
No announcement yet.

XBox 360 Reset Glitch Hack on Fat and Slim Models

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • XBox 360 Reset Glitch Hack on Fat and Slim Models

    Video below courtesy of Razkar2011 via YouTube.



    Download:

    XBox 360 Reset Glitch Hack v1.0

    GliGli Tools Source Code

    XBox 360 Reset Glitch Hack Guide

    ECC Glitch Generator v1.0

    Xell Reloaded 2Stage 28-08-11

    GITbrew

    Wiki

    SOURCE

    GliGli released a new hack to boot the XBox360 into XeLL and thus run homebrew software on your console. It's is compatible with ALL dashboard versions and ALL Slim and Fat (expect Xenon, Falcon support will follow later) models, and is unpatchable via software updates by Microsoft.

    From the readme/nfo:
    Introduction / some important facts
    ===================================

    tmbinc said it himself, software based approaches of running unsigned code on the 360 mostly don't work, it was designed to be secure from a software point of view.

    The processor starts running code from ROM (1bl) , which then starts loading a RSA signed and RC4 crypted piece of code from NAND (CB).

    CB then initialises the processor security engine, its task will be to do real time encryption and hash check of physical DRAM memory. From what we found, it's using AES128 for crypto and strong (Toeplitz ?) hashing. The crypto is different each boot because it is seeded at least from:
    - A hash of the entire fuseset.
    - The timebase counter value.
    - A truly random value that comes from the hardware random number generator the processor embeds. on fats, that RNG could be electronically deactivated, but there's a check for "apparent randomness" (merely a count of 1 bits) in CB, it just waits for a seemingly proper random number.

    CB can then run some kind of simple bytecode based software engine whose task will mainly be to initialise DRAM, CB can then load the next bootloader (CD) from NAND into it, and run it.

    Basically, CD will load a base kernel from NAND, patch it and run it.

    That kernel contains a small privileged piece of code (hypervisor), when the console runs, this is the only code that would have enough rights to run unsigned code.
    In kernel versions 4532/4548, a critical flaw in it appeared, and all known 360 hacks needed to run one of those kernels and exploit that flaw to run unsigned code.
    On current 360s, CD contains a hash of those 2 kernels and will stop the boot process if you try to load them.
    The hypervisor is a relatively small piece of code to check for flaws and apparently no newer ones has any flaws that could allow running unsigned code.

    On the other hand, tmbinc said the 360 wasn't designed to withstand certain hardware attacks such as the timing attack and "glitching".

    Glitching here is basically the process of triggering processor bugs by electronical means.

    This is the way we used to be able to run unsigned code.

    The reset glitch in a few words
    ===============================

    We found that by sending a tiny reset pulse to the processor while it is slowed down does not reset it but instead changes the way the code runs, it seems it's very efficient at making bootloaders memcmp functions always return "no differences". memcmp is often used to check the next bootloader SHA hash against a stored one, allowing it to run if they are the same. So we can put a bootloader that would fail hash check in NAND, glitch the previous one and that bootloader will run, allowing almost any code to run.

    Details for the fat hack
    ========================

    On fats, the bootloader we glitch is CB, so we can run the CD we want.

    cjak found that by asserting the CPU_PLL_BYPASS signal, the CPU clock is slowed down a lot, there's a test point on the motherboard that's a fraction of CPU speed, it's 200Mhz when the dash runs, 66.6Mhz when the console boots, and 520Khz when that signal is asserted.

    So it goes like that:
    - We assert CPU_PLL_BYPASS around POST code 36 (hex).
    - We wait for POST 39 start (POST 39 is the memcmp between stored hash and image hash), and start a counter.
    - When that counter has reached a precise value (it's often around 62% of entire POST 39 length), we send a 100ns pulse on CPU_RESET.
    - We wait some time and then we deassert CPU_PLL_BYPASS.
    - The cpu speed goes back to normal, and with a bit of luck, instead of getting POST error AD, the boot process continues and CB runs our custom CD.

    The NAND contains a zero-paired CB, our payload in a custom CD, and a modified SMC image.
    A glitch being unreliable by nature, we use a modified SMC image that reboots infinitely (ie stock images reboot 5 times and then go RROD) until the console has booted properly.
    In most cases, the glitch succeeds in less than 30 seconds from power on that way.

    Details for the slim hack
    =========================

    The bootloader we glitch is CB_A, so we can run the CB_B we want.

    On slims, we weren't able to find a motherboard track for CPU_PLL_BYPASS.
    Our first idea was to remove the 27Mhz master 360 crystal and generate our own clock instead but it was a difficult modification and it didn't yield good results.
    We then looked for other ways to slow the CPU clock down and found that the HANA chip had configurable PLL registers for the 100Mhz clock that feeds CPU and GPU differential pairs.
    Apparently those registers are written by the SMC through an I2C bus.
    I2C bus can be freely accessed, it's even available on a header (J2C3).
    So the HANA chip will now become our weapon of choice to slow the CPU down (sorry tmbinc, you can't always be right, it isn't boring and it does sit on an interesting bus

    So it goes like that:
    - We send an i2c command to the HANA to slow down the CPU at POST code D8 .
    - We wait for POST DA start (POST DA is the memcmp between stored hash and image hash), and start a counter.
    - When that counter has reached a precise value, we send a 20ns pulse on CPU_RESET.
    - We wait some time and then we send an i2c command to the HANA to restore regular CPU clock.
    - The cpu speed goes back to normal, and with a bit of luck, instead of getting POST error F2, the boot process continues and CB_A runs our custom CB_B.

    When CB_B starts, DRAM isn't initialised so we chose to only apply a few patches to it so that it can run any CD, the patches are:
    - Always activate zero-paired mode, so that we can use a modified SMC image.
    - Don't decrypt CD, instead expect a plaintext CD in NAND.
    - Don't stop the boot process if CD hash isn't good.

    CB_B is RC4 crypted, the key comes from the CPU key, so how do we patch CB_B without knowing the CPU key?
    RC4 is basically:
    crypted = plaintext xor pseudo-random-keystream
    So if we know plaintext and crypted, we can get the keystream, and with the keystream, we can encrypt our own code. It goes like that:
    guessed-pseudo-random-keystream = crypted xor plaintext
    new-crypted = guessed-pseudo-random-keystream xor plaintext-patch
    You could think there's a chicken and egg problem, how did we get plaintext in the first place?
    Easy: we had plaintext CBs from fat consoles, and we thought the first few bytes of code would be the same as the new CB_B, so we could encrypt a tiny piece of code to dump the CPU key and decrypt CB_B!

    The NAND contains CB_A, a patched CB_B, our payload in a custom plaintext CD, and a modified SMC image.
    The SMC image is modified to have infinite reboot, and to prevent it from periodically sending I2C commands while we send ours.

    Now, maybe you haven't realised yet, but CB_A contains no checks on revocation fuses, so it's an unpatchable hack !

    Caveats
    =======

    Nothing is ever perfect, so there are a few caveats to that hack:
    - Even in the glitch we found is pretty reliable (25% success rate per try on average), it can take up to a few minutes to boot to unsigned code.
    - That success rate seems to depend on something like the hash of the modified bootloader we want to run (CD for fats and CB_B for slims).
    - It requires precise and fast hardware to be able to send the reset pulse.

    Our current implementation
    ==========================

    We used a Xilinx CoolRunner II CPLD (xc2c64a) board, because it's fast, precise, updatable, cheap and can work with 2 different voltage levels at the same time.
    We use the 48Mhz standby clock from the 360 for the glitch counter. For the slim hack, the counter even runs at 96Mhz (incremented on rising and falling edges of clock)
    The cpld code is written in VHDL.
    We need it to be aware of the current POST code, our first implementations used the whole 8 bits POST port for this, but we are now able to detect the changes of only 1 POST bit, making wiring easier.

    Conclusion
    ==========

    We tried not to include any MS copyrighted code in the released hack tools.
    The purpose of this hack is to run Xell and other free software, I (GliGli) did NOT do it to promote piracy or anything related, I just want to be able to do whatever I want with the hardware I bought, including running my own native code on it.

    Credits
    =======

    GliGli, Tiros: Reverse engineering and hack development.
    cOz: Reverse engineering, beta testing.
    Razkar, tuxuser: beta testing.
    cjak, Redline99, SeventhSon, tmbinc, anyone I forgot... : Prior reverse engineering and/or hacking work on the 360.
    The Hackmaster

  • #2
    I've seen this elsewhere but all I can say is hell yea, I have a jtag I did myself and its good to see it can be done on newer more reliable models.
    Spoiler Alert! Click to view...

    THE BAD GUY!!!!!!

    Comment


    • #3
      This Tutorial explains how to hack your XBox 360 Slim with the Reset Glitch Hack in order to launch unsigned code.

      I: Software and Hardware needed

      Prerequisites :

      ★ Installed XillinX Lab Tools

      Software :

      ★ Python and Pyton Crypto
      ★ Impact (from Xilinx Lab Tools)
      ★ NandPro (>= v2.0e)

      Hardware :

      ★ USB SPI Programmer to dump/flash the Xbox360's NAND

      Reset Glitch Hack on Slim Tutorial
      The Hackmaster

      Comment


      • #4
        I was considering buying a new XBox360 but was always worried I couldn't run any homebrew. I think I'll go grab one within the next few months.
        July 7, 2019

        https://www.4shared.com/s/fLf6qQ66Zee
        https://www.sendspace.com/file/jvsdbd

        Comment


        • #5
          There's a couple details to this people seem to miss, so they're worth pointing out: This hack is not the same as the JTAG stuff, and it's entirely incompatible with Xenon boards.

          Also as to be expected the people who came up with this seem to primarily be interested in running Linux on 360, to run ports of open source software in Linux. If they're really silly someone might end up getting a PowerPC version of Mac OS running on the hardware.

          Comment


          • #6
            I'm sure in due time there will be a hacked dashboard to be like the other jtag hacks, and by then hopefully better hardware or rather cheaper hardware to do this.
            Spoiler Alert! Click to view...

            THE BAD GUY!!!!!!

            Comment


            • #7
              The hardware for this is surprisingly cheap. Seems to be about $30 while it's still in stock anywhere. Of course part of the issue with that is it isn't suitable hardware, and likely has lower timing success rates than a decently made more dedicated piece of equipment would.

              Comment


              • #8
                360 Squirt - The first Actel Based Glitcher

                Introducing SQUIRT 360: The first Actel Based glitch hack



                Quote:

                The specs:

                - A3P060 ACTEL 100Mhz (double speed then XILINX version)
                - Oscillator on board (super stable compared to other solutions)
                - ZIF15 pin JTAG updatable (compatible with INJECTUS JTAG programmer)
                - Dynamic Glitch Configuration (users can setup timing for a perfect glitch on each console)

                The 100 Mhz speed allows the Squirt360 to execute a perfect GLITCH in about 5 seconds. This means the Squirt360 can be up to 10 times faster to boot the 360 when compared to other solutions which use cheaper components.

                PRICE? The best thing about the Squirt360 is the fact that it is cheaper then the cheap solutions!

                Prototype pictures in a couple of days, and reviews very soon. Stay tuned at www.360squirt.com
                Last edited by dlevere; 09-09-2011, 02:30:11 AM.
                The Hackmaster

                Comment


                • #9
                  I'd be very interested in this if it allows me to modify my games. I can't seem to find anything online about modding xbox360 games though. I know I can modify the elf file for PS2 games and the EBOOT.ELF file for PS3 games, but I wouldn't know what to mess with for Xbox360 games.
                  July 7, 2019

                  https://www.4shared.com/s/fLf6qQ66Zee
                  https://www.sendspace.com/file/jvsdbd

                  Comment


                  • #10
                    I know its done on the default.xex file after its decrypted and using IDA to do it, its powerpc language.
                    Spoiler Alert! Click to view...

                    THE BAD GUY!!!!!!

                    Comment


                    • #11
                      Originally posted at PS3 Crunch

                      EDGE 360 GX

                      Owing to recent developments by Gligli (Reset Glitch Hack), which allows the booting of unsigned code on the XboX 360, irrespective of Kernel version, and on all versions of the X360 and X360 Slim motherboard (Except Xenon Motherboard), we’re pleased to offer the Edge 360 GX modchip!



                      Edge360 GX works by sending pulses to the console’s processor thereby allowing unsigned code to boot as if it was legitimate signed code. Owing to the differential timing of this attack, the Edge360 GX repeats the process until booting of unsigned code is successful. Once this has been achieved, XeLL, the Xenon Linux Loader is booted.

                      Current Features:

                      • Booting of unsigned code on Xbox 360 and XBOX360 slim

                      • Compatible with both X360 (except Xenon) and X360 slim

                      • Works with all X360 NAND programmers

                      • Compatible with all X360 kernel versions

                      • Super easy installation (7 Wires on Slim, 6 Wires on Phat)

                      • Onboard Actel reprogrammable via JTAG without soldering (programmer will be sold separately)

                      • Booting of X360 unsigned code within max of 2-3 minutes

                      • Designed in Europe

                      • Manufactured using high quality branded components

                      • Budget pricing

                      • The Edge360 GX offers JTAG equivalent on all xbox 360 (Except Xenon)

                      • FFC connectors onboard offering connection to optional quick solder kit (available separately at a later date)

                      * Falcon version to follow soon

                      Official Site: http://www.edge-360.cn/
                      The Hackmaster

                      Comment


                      • #12
                        Perfect, that's what I would need to know. Now I just need to figure out how to get that device and use it to get that homebrew Xbox360 manager thing from the xbox scene website and get to work. I'd love to make the Left4Dead games a lot easier, and mess around with Beautiful Katamari since it's 3 blocks away at the library.
                        July 7, 2019

                        https://www.4shared.com/s/fLf6qQ66Zee
                        https://www.sendspace.com/file/jvsdbd

                        Comment


                        • #13
                          GliGli released a new version of the Reset Glitch Hack (RGH) that allows you to run homebrew software on any 360 console (except Xenon).

                          What's new/fixed:

                          * Falcon support.

                          * Per hardware revision SMC patches (no more need for Jasper donor smc on fats).

                          * Adding sanity check on 1BL key.

                          * Adding support for donor CB on fats.

                          * Debug pin on fats and slims.

                          * New Xell with some bugs fixed.

                          * Now using 270pf capacitor for slims, many reported it works better.

                          Official Site:

                          https://github.com/gligli/tools/tree...et_glitch_hack

                          http://gligli360.blogspot.com/

                          http://libxenon.org/

                          http://www.free60.org/

                          Download: here

                          News-Source: xboxhacker.org
                          The Hackmaster

                          Comment


                          • #14
                            I can't wait for a dashboard or similar interface, but above all else is a chip to boot everytime, having to wait 2-3 minutes for every boot sucks big time especially with the recent Gboot can only boot one game and then you have to reset the xbox to play another and have to wait 2-3 minutes to load.
                            Spoiler Alert! Click to view...

                            THE BAD GUY!!!!!!

                            Comment

                            Working...
                            X