...::: Das Beraterforum :::...
05. September 2010, 17:03:07*

Willkommen Gast. Bitte einloggen oder registrieren.
Einloggen mit Benutzername, Passwort und Sitzungslänge
News:

Willkommen im Beraterforum !!!


Unterstützt uns, so kommen wir auf Platz 1!

BannerRank :: Banner-Ranking :: BR
Seiten: [1]   Nach unten
Drucken
Autor Thema: How to Load METLDR in SPU Isolation Mode on PlayStation 3  (Gelesen 274 mal)
THREE_Consoles
The White Knight "Dark Fairy"
Administrator
*****
Offline Offline

Beiträge: 628



« am: 29. März 2010, 23:23:09 »

Just over a month ago the PS3 Hypervisor lv2 (GameOS) was dumped and GeoHot  hinted  that it was accomplished by commanding an SPU to load METLDR.

Today dondolo let us know that simone has detailed how to load METLDR in SPU isolation mode on the PlayStation 3 and included some
Register or Login
http://www.piemontewireless.net/images/3/32/Spuisolation.tgz.


While this is definitely a step forward, he still doesn't specify what the read/write u32 functions are... or which functions to add to the recent XorHack release.

Those interested can check it out below, and to quote:

"After some experiment I succeded to load METLDR in spu isolation.

You need geohot's exploit to do this, because you need to turn spu relocation off (MFC_SR1[R]=0) and not let know the HV you are using a SPU (so no calls to lv1_construct_logical_spe or similar). For some strange conf, it doesn't work in HV way."

Code:
// Turn relocation OFF
  printf("<TURN RELOCATION OFF>\n");
  write_u64(SPU_P1(SPU_CURR)+0x0000, (read_u64(SPU_P1(SPU_CURR)+0x0000) & 0xFFFFFFFFFFFFFFEF�;
  printf("MFC_SR1 = %llx\n", read_u64(SPU_P1(SPU_CURR)+0x0000�;

  // no accesses are to be considered well behaved and cacheable
  write_u64(SPU_P1(SPU_CURR)+0x0900, (u64)0x0);

  // set overwrite mode for signal notification 1/2
  write_u64(SPU_P2(SPU_CURR)+0x4078, (u64)0x0);

  // set signal_notify1 = high metldr real address
  write_u32(SPU_PS(SPU_CURR)+0x1400C, (u32)0x0);

  // set signal_notify2 = low metldr real address
  write_u32(SPU_PS(SPU_CURR)+0x1C00C, (u32)0x11000);


  printf("---> START SPU IN ISOLATION MODE\n");

  // set SPU_PRIVCNTL[LE]=1
  write_u64(SPU_P2(SPU_CURR)+0x4040, (u64)0x4);

  // set SPU_RUNCNTL[Run] = '11'
  write_u32(SPU_PS(SPU_CURR)+0x401C, (u32)0x3);


  for (cx=0; cx<3; cx++)
  {
    // Print SPU_STATUS
    print__spu_status(read_u32(SPU_PS(SPU_CURR)+0x4024�;

    sleep(5);
  }

Gespeichert

PimpYoureConsole dein Konsolen Moder in Österreich


Register or Login
Seiten: [1]   Nach oben
Drucken
Gehe zu:  

TinyPortal v.1.0.6 beta 2 © Bloc
BannerRank :: Banner-Ranking :: BR

Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC
MySQL | PHP | XHTML | CSS   
  Theme by C r i p ~ | Modded by djmastera2000