Bono2007 Posté(e) le 16 août 2009 Posté(e) le 16 août 2009 Source : http://www.xboxhacker.net/index.php?topic=12208.0 Auteur : tmbinc Ici un petit howto sur le patch du code SMC. D'abord, rappelez vous que le code SMC est stocké dans la NAND de 0x1000 à 0x4000 (habituellement), et qu'il est encrypté, mais peut être décrypté de façon triviale. Le script imgbuild produit le SMC décrypté pour vous. C'est un code 8051, et c'est le code qui est en charge de booter le CPU, et il contrôle aussi des éléments hardware. Le CPU peut dialoguer au SMC via PCI-e, donc il y a une "command handling" dans le code. Il a plusieurs versions du SMC (même multiples pour un type de carte), mais utiliser n'importe quel SMC fait pour votre type de carte conviendra (ie la révision importe peu, mais il est important que ce soit fait pour votre type de carte, ie, Xenon/Zephyr/Falcon/Jasper) Le hack fonctionne ainsi : Juste au démarrage du kernel, le kernel demande le RTC depuis le SMC. C'est la command 04, qui est envoyée à travers les registres ea00108x. Dans le SMC, approximativement à l'offset 0x836 (diffère suivant les versions des SMC), il y a un code semblable (pseudo code pour éviter de coller de l'assembleur) Code:if (A == 1) goto CMD_01; else if (A == 4) goto CMD_04; else if (A == 7) goto CMD_07; else if (A == 0xa) goto CMD_0A; else if (A == 0xF) goto CMD_0F; ... suivez la CMD_04. La fonction finie par une série de "mov A, <somevalue>; lcall write_fsr_d5". C'est la fonction que nous voulons hacker, et nous avons besoin de la fonction suivante : "mov FSR_F5, 7" Comme FSR_F5 est le registre de la command NAND (aussi accessible depuis ea00c0xx), et 7 est la commande "read physical page, DMA" . Encodé, c'est "75 f5 07", on doit donc réécrire "E5 30 12 xx xx" avant le "22" (ret) avec "75 f5 07 22", i.e. "mov FSR_F5, 7; ret". That's it.
legueux Posté(e) le 17 août 2009 Posté(e) le 17 août 2009 Merci pour l'information, l'article a été publié sur le site.
Messages recommandés