xbox360吧 关注:267,930贴子:6,115,838

回复:Xbox360保护和破解的历程

取消只看楼主收藏回复

但当LTU板的库存已经耗尽时,c4eva做了一个惊人的把戏
—他为MT1319芯片编译了iXtreme LTU2固件!该处理器曾出现在“厚型”游戏机的第一款 LiteOn 16D2S 中。是的,他们开始组装并销售新的 LTU2 板:
最后,有些黑客也加入了庆祝活动,并开始制造基于 MT1309 的主板,MT1309 是带有外部闪存驱动器的 MT1319 的更常见的兄弟:
当 Xbox 360 的新版本Slim E发布时,Xbox 360 固件的时代结束了,在该版本(Winchester小cpu版,无法破解机器)上无法从破解系统,或 DVD 驱动器获取密钥。但下一部分将对此进行更多介绍!
敬请期待第三部分



IP属地:浙江来自Android客户端103楼2023-10-15 02:19
回复
    2011年,即Xbox 360游戏机发布6年后,研究人员发现了一个有趣的事实
    ——如果在中央处理器的RESET引脚上施加一个“0”信号很短的时间,处理器将不会重置其状态(应该如此)。
    反而会改变他的行为!
    基于这个“功能” , Reset Glitch Hack(RGH)被开发出来,借助它可以完全破坏Xbox 360的安全性,运行未签名的代码,从而为黑客入侵系统本身开辟了道路,击败了Xbox 360 “无法破解”的DG-16D5S驱动器。
    让我们仔细看看 RGH 是如何工作的,开发人员如何尝试修补漏洞,以及这些补丁是如何被绕过的!


    IP属地:浙江来自Android客户端104楼2023-10-15 11:05
    回复
      2026-07-12 22:50:27
      广告
      不感兴趣
      开通SVIP免广告
      到底什么是故障攻击?
      无论营销人员怎么说,处理器都是一个非常愚蠢的东西。程序员编写的所有高级代码都归结为简单命令的执行
      - 数字算术、移动数据、条件和无条件跳转。假设处理器始终执行这些指令而没有错误,并且结果与文档相符。
      确实,编译代码
      i = i + 2;
      您依赖的变量 i 的值恰好增加 2,甚至处理器没有意识到除此之外否则会发生什么情况。
      故障攻击违背了这种信心
      ——他们的目标是让处理器出现“故障”并表现不正确。造成处理器故障的方法有多种,例如:
      耗尽CPU电源电压
      给CPU参考频率一个额外的脉冲
      用辐射“提升”百分之一的运行速度


      IP属地:浙江来自Android客户端105楼2023-10-15 11:24
      回复
        有一些特殊的设备可以执行此类攻击 - 例如,ChipWhisperer 提供广泛的频率和功率攻击


        IP属地:浙江来自Android客户端106楼2023-10-15 11:25
        回复
          对于 Xbox 360,“故障”是由于接触 RESET 线而发生的。处理器开始重置过程,但由于信号持续时间非常短,它没有时间完成它并继续工作,就好像什么也没发生一样。
          但正是在外部 RESET 脉冲信号激活的这短暂时刻,其行为发生了变化!
          处理器出现故障
          Xbox 360 的安全性依赖于下载者在链中相互检查。最终,每个阶段的检查都归结为调用一个函数来将哈希和与“样本”进行比较。
          这就是使用故障攻击的地方,迫使处理器忽略不匹配。
          调用memcmp过程后,RESET 线上的脉冲会立即导致处理器“转到”另一个分支并继续加载,即使散列不正确:


          IP属地:浙江来自Android客户端107楼2023-10-15 11:36
          回复
            更新:进一步的研究表明,脉冲攻击需要的时间比图中所示的要早一些,即在算术运算中,例如,addi r3,r4,5。更准确地说,在源寄存器需要被重置的机会,,在示例中它是 r4 最好
            在第二阶段引导加载程序“CB”中发现了攻击的地方。后期阶段更难攻击(并且可以轻松修复),但在加载的第一阶段(“1BL”,ROM),由于程序代码的结构略有不同,攻击失败。
            听起来很简单,但实际上,在尝试进行攻击时,发现了许多细微差别。
            首先,为了成功地执行这个细小的攻击,必须非常准确地确定应发送 RESET 脉冲的时刻。如果你犯了哪怕一微秒的错误,发送的脉冲太短或太长,攻击都不会起作用。
            幸运的是,在 Xbox 360 上,每个启动步骤都伴随着 POST_OUT 调试总线 上的值的更改。
            此外,调试输出的间隔如此频繁,以至于在比较哈希和之前立即设置新的 POST 值:


            IP属地:浙江来自Android客户端108楼2023-10-15 12:52
            回复
              如此接近原理的一个输出位置,攻击CPU的调试输出点,被证明是一个极其方便的可计算触发器。
              POST_OUT是一条并行总线,输出到印刷电路板上的8个测试焊盘,每个测试焊盘负责其中一个值位。
              甚至可以通过仅使用一位并计算自系统启动以来其状态变化的次数来简化连接线束
              但是事实证明,由于处理器的频率很高,因此在准确性和持续时间(毫秒级别)方面几乎不可能达到正确的时刻。影响时间应该非常短,相当于处理器执行一条指令的时间,但很难做到。
              而处理器运行速度越慢,适合我们的时间就越长。因此,我们需要接受它这个现实,并减慢处理器的速度来达到目的!


              IP属地:浙江来自Android客户端109楼2023-10-15 19:32
              回复
                在普通 PC 上,CPU 频率由外部“参考”频率(外频)和乘数的乘积(倍频)确定
                因此,在 Xbox 360 中也是同样,南桥固件控制的外部参考频率线连接到处理器,并在内部使用PLL倍增该频率。在旧的、“厚”版本的机顶盒上,PLL 机制可以被禁用,从而使处理器速度降低多达 128 倍,来达成我们的目的



                IP属地:浙江来自Android客户端110楼2023-10-15 19:37
                收起回复
                  2026-07-12 22:44:27
                  广告
                  不感兴趣
                  开通SVIP免广告
                  在“Slim”版本上,PLL 的技巧无法完成(线路未在板上布线)。
                  由于我们无法影响“Slim”中的乘法器(倍频),因此我们将降低“参考”频率(外频)!
                  更新:由于薄板上的泄漏电路,PLL线被成功检测到,因此出现了RGH 1.2 Slim和RGH3方法。
                  它由HANA芯片生成,可以通过I2C总线进行配置:
                  不幸的是,不可能显着降低它“在低速下”。调节外频后的最终的处理器频率,大幅“浮动”,并不是很稳定,这降低了成功的机会。最稳定的选项结果是减速 3.17 倍。不是128倍,至少有一些成效。
                  全部?不,不是一切。还远不能确定该攻击第一次是否会起作用(尤其是在 Slim 上)。如果启动失败,机顶盒将重新启动并尝试再次启动。您只能尝试 5 次启动,之后控制台会停止并开始闪烁“死亡红环”。
                  注:由于2.0破解的原理决定。所以薄机版本的rgh2.0,也就是最开始的破解方式,不够稳定,后续的发展改良芯片稍微好一些。厚机也因此也不稳定,需要很好的布线


                  IP属地:浙江来自Android客户端111楼2023-10-15 19:42
                  收起回复
                    因此,我们还修补了南桥(SMC)的固件,使其不会受到原来的设定,以及不成功的脉冲的影响,并设置为可以无限制重新启动游戏机,直到它成功启动
                    所以,我们得到方法
                    —修补SMC,防止红灯
                    —减速CPU(降低CPU运行频率,通过PLL或者i2C)
                    —等待POST的信号,来触发脉冲条件
                    —等待n微秒
                    —发送长度为n微秒的重置脉冲信号
                    —恢复cpu频率使其正常运行执行代码
                    如果没有成功启动,重复执行以上步骤


                    IP属地:浙江来自Android客户端112楼2023-10-15 19:49
                    收起回复
                      为了提高计算的准确性,从同一 HANA 芯片中获取频率 (48 MHz) Ext_CLK,来发送脉冲信号的时候,保证同步性
                      基于廉价的 CPLD Xilinx XC2C64A 得到了这个设计
                      (Matrix Glitcher)(CoolRunner Glitch)



                      IP属地:浙江来自Android客户端113楼2023-10-15 19:53
                      回复
                        不要忘记调整重置接线(1.0 PLL,2.0 RST)的长度和位置(注意照片底部的“线圈”)并继续,希望不断重复脉冲过程能在一分钟内完成。
                        但这只是从硬件方面来说。我们如何修补引导加载程序并插入我们的代码?
                        修补引导加载程序:
                        正如我已经提到的,二级引导程序“CB”可受到攻击。
                        早期,这个bootloader是用固定密钥加密的,所有游戏机都一样,但是“CB”不能修改,我们只能攻击它。
                        而且不能进行JTAG的CB版本已经用 CPU 密钥加密,每个游戏机的CPUKey都是唯一的。要修改这个CB,你需要知道这个密钥......
                        或者不需要?
                        在 Xbox 360 的旧“厚”版本中,“CB”加载器支持所谓的“零配对”模式,该模式在游戏机的生产阶段使用。在每个加载程序的标头中偏移量 0x10 处有一组随机数据“配对数据”,用作解密密钥的一部分。如果该数据集完全由零组成(“零配对”),则处理器密钥将被忽略,并使用固定的零密钥进行解密!


                        IP属地:浙江来自Android客户端114楼2023-10-15 19:58
                        收起回复
                          使用这个技巧,可以使用原始“CB”组装固件,但是使用零密钥加密下一个引导加载程序“CD”(已经使用自己的代码),并使用 RGH 启动它!


                          IP属地:浙江来自Android客户端115楼2023-10-15 20:04
                          收起回复
                            在“Slim”主机中,这个技巧也被拒绝了,取消了“零配对”模式,并将“CB”分成两部分。这里“CB”被分为一个非常简单且小的“CB_A”和一个加密的处理器密钥“CB_B”
                            注:在14717系统更新以后,旧的厚机也更新成为了双CB引导,所以也需要RGH2.0


                            IP属地:浙江来自Android客户端116楼2023-10-15 20:07
                            回复
                              2026-07-12 22:38:27
                              广告
                              不感兴趣
                              开通SVIP免广告
                              但RC4算法加密(即“CB_B”就是用该算法加密)有一个特点。可以基于密钥的加密过程生成与原始数据进行二进制“相加”(xor) 的伪随机数据流。
                              在解密时,会发生同样的事情;因此解密只需要使用相同的伪随机流,进行加法。会将数据返回到其原始值:


                              IP属地:浙江来自Android客户端117楼2023-10-15 20:15
                              回复