Flukes1 has released his long-awaited tools for PeeK / poke and the Lv1 (hypervisor) and LV2 (GameOS) patch.
Explanations in English:Spoiler
As you may know if you've been following my progress, last week I took a short break from Wi-Fi Sync to look at the PS3 and how it works behind the scenes. The PS3 homebrew scene is currently at a point where you can install userland packages, such as FTPDs and SNES emulators, but you still don't have any access to the hypervisor or GameOS kernel. It's still very much a closed system.
As an iPhone developer with an app on Cydia, I can see great potential within the PS3. It's crying out for a decent package manager, but you need OS-level access to do that effectively. Unlocking the PS3 in this way has other benefits too; the system can effectively be modified in any way you wish.
So today I'm releasing three tools which open the PS3's hypervisor (lv1) and GameOS (lv2) to full read/write access from packaged userland applications. These tools can be used to create and test lv1/lv2 patches in RAM, which negates the risk of bricking your PS3 by flashing it with an incorrectly patched lv1 or lv2 binary. You can also use the tools to create a patched lv1 or lv2 binary, if you wish, although I suggest thoroughly testing your patches in-memory first.
I will make a few things clear before continuing: I do not condone piracy and these tools DO NOT enable copied games to run on the PS3. Again: these tools will not allow backup managers to suddenly start working on firmware 3.55. The tools are packaged in source code form and do not include any Sony code or other Sony assets such as encryption keys. If you're not a developer, these tools will be useless to you, so please do not try to use them. They are made available with no implied warranty of fitness for a particular purpose.
Three tools are being made available today:
* resign_self.py. This allows you to automatically replace any segment within a self and re-sign the self so the signatures and hashes are all valid again. Similar to makeself, but it is more suited towards patching lv1 and lv2 (and has been tested for this purpose).
* insert_lv1_lv2.py. This is just a convenience script I made to take a modified, re-signed lv1.self and lv2_kernel.self, and automatically create a PUP which is identical to an original PUP except for those two files.
* lv1dumper. This is an application which runs on the PS3 that you can compile and package using PSL1GHT and geohot's tools. After running it, lv1 will be mapped at 0x8000000014000000 with read/write access, and you will be able to poke lv2 without the system shutting down. It disables the new lv2 memory hashing feature Sony added to 3.55 (probably to stop future USB jailbreaks).
lv1dumper requires that some patches to lv1 and lv2 are already in place. I'll describe how to add these patches. They have been tested but I cannot guarantee that they won't brick your PS3. Do not do this unless you're comfortable with that.
Firstly, you need to extract the decrypted code segments from lv1.self and lv2_kernel.self (just use unself and copy them directly out of the ELF), and make the following changes to to them, assuming you're using 3.55:
* lv1_undocumented_function_114 in lv1 must be patched so that it can be used to map any area of real memory. graf_chokolo found this trick months ago, but it still applies here. Patch the byte at D5A47 from 00 to 01 (2D5A47 if you're looking for it in IDA).
* You then need to add peek and poke to lv2. Patch 1933C to E8 63 00 00 60 00 00 00 and 19348 to F8 83 00 00 60 00 00 00.
You can then use resign_self.py to re-insert your patched code segment back into the self. You'll firstly need to change a few bytes in some useless strings because of the way zlib deflate works; the script will tell you what to do. I found that changing strings was the easiest way to do this, it just takes a bit of trial and error.
Finally, use insert_lv1_lv2.py to create your modified PUP. You'll need to update to the PUP, then install geohot's jailbreak PUP over the top of it. If you've done everything right, lv1dumper should just exit after you run it and you'll have r/w access to lv1 and lv2 (peek and poke). The lv1_peek, lv1_poke, lv2_peek and lv2_poke functions in lv1dumper show how to use that access.
I'm hoping that some interesting and innovative stuff can come out of this, and maybe we can start to see 'unofficial' apps enjoying the same success on the PS3 that they do on the iPhone.
Flukes1 a publié ses outils tant attendu pour PeeK / poke et le patch du Lv1 (hypervisor) et LV2 (GameOS).
Explications en Anglais :Spoiler
As you may know if you’ve been following my progress, last week I took a short break from Wi-Fi Sync to look at the PS3 and how it works behind the scenes. The PS3 homebrew scene is currently at a point where you can install userland packages, such as FTPDs and SNES emulators, but you still don’t have any access to the hypervisor or GameOS kernel. It’s still very much a closed system.
As an iPhone developer with an app on Cydia, I can see great potential within the PS3. It’s crying out for a decent package manager, but you need OS-level access to do that effectively. Unlocking the PS3 in this way has other benefits too; the system can effectively be modified in any way you wish.
So today I’m releasing three tools which open the PS3’s hypervisor (lv1) and GameOS (lv2) to full read/write access from packaged userland applications. These tools can be used to create and test lv1/lv2 patches in RAM, which negates the risk of bricking your PS3 by flashing it with an incorrectly patched lv1 or lv2 binary. You can also use the tools to create a patched lv1 or lv2 binary, if you wish, although I suggest thoroughly testing your patches in-memory first.
I will make a few things clear before continuing: I do not condone piracy and these tools DO NOT enable copied games to run on the PS3. Again: these tools will not allow backup managers to suddenly start working on firmware 3.55. The tools are packaged in source code form and do not include any Sony code or other Sony assets such as encryption keys. If you’re not a developer, these tools will be useless to you, so please do not try to use them. They are made available with no implied warranty of fitness for a particular purpose.
Three tools are being made available today:
* resign_self.py. This allows you to automatically replace any segment within a self and re-sign the self so the signatures and hashes are all valid again. Similar to makeself, but it is more suited towards patching lv1 and lv2 (and has been tested for this purpose).
* insert_lv1_lv2.py. This is just a convenience script I made to take a modified, re-signed lv1.self and lv2_kernel.self, and automatically create a PUP which is identical to an original PUP except for those two files.
* lv1dumper. This is an application which runs on the PS3 that you can compile and package using PSL1GHT and geohot’s tools. After running it, lv1 will be mapped at 0x8000000014000000 with read/write access, and you will be able to poke lv2 without the system shutting down. It disables the new lv2 memory hashing feature Sony added to 3.55 (probably to stop future USB jailbreaks).
lv1dumper requires that some patches to lv1 and lv2 are already in place. I’ll describe how to add these patches. They have been tested but I cannot guarantee that they won’t brick your PS3. Do not do this unless you’re comfortable with that.
Firstly, you need to extract the decrypted code segments from lv1.self and lv2_kernel.self (just use unself and copy them directly out of the ELF), and make the following changes to to them, assuming you’re using 3.55:
* lv1_undocumented_function_114 in lv1 must be patched so that it can be used to map any area of real memory. graf_chokolo found this trick months ago, but it still applies here. Patch the byte at D5A47 from 00 to 01 (2D5A47 if you’re looking for it in IDA).
* You then need to add peek and poke to lv2. Patch 1933C to E8 63 00 00 60 00 00 00 and 19348 to F8 83 00 00 60 00 00 00.
You can then use resign_self.py to re-insert your patched code segment back into the self. You’ll firstly need to change a few bytes in some useless strings because of the way zlib deflate works; the script will tell you what to do. I found that changing strings was the easiest way to do this, it just takes a bit of trial and error.
Finally, use insert_lv1_lv2.py to create your modified PUP. You’ll need to update to the PUP, then install geohot’s jailbreak PUP over the top of it. If you’ve done everything right, lv1dumper should just exit after you run it and you’ll have r/w access to lv1 and lv2 (peek and poke). The lv1_peek, lv1_poke, lv2_peek and lv2_poke functions in lv1dumper show how to use that access.
I’m hoping that some interesting and innovative stuff can come out of this, and maybe we can start to see ‘unofficial’ apps enjoying the same success on the PS3 that they do on the iPhone.
well yeah it's super cool, but who's going to make us a cfw? , please I need to activate 3d
won't be tonight anyway lol well thanks salah, I've been following the news since the start of the evening and there's arguing, arguing, chatting, complaining, even insulting, but me I'm patient, I'm patient
bah oué c'est super cool, mais qui va nous faire un cfw ? , svp j'ai besoin d'activer la 3d
ca sera pas pour ce soir en tout cas lol bon merci salah, j'ai suivi la news depuis le début de la soirée et ca débat ca débat, ca papote ca râle, ca insulte même, mais moi je patiente je patiente
you install it as usual, meaning once everyone else has tested it
ps: this is a joke don't go looking for it, it doesn't exist!!!!
lol, that said I have 2 ps3s, I don't mind being the guinea pig, I'm a kamikaze too don't worry
if you have 2 ps3s I assume the 2nd one is clean, give me your psnid or add me!!
uh well no I have both on 3.41, one in the living room and the other in my son's bedroom, but anyway I'll still give you my psnid in PM, tell me could you patch waninkoko's firmware for me? I don't have linux SNifffffffffff
tu l'installe comme dab c'est a dire quand les autres l'on testé
ps:ceci est une plaisanterie ne pas chercher il n'existe pas!!!!
mdr, ceci dit j'ai 2 ps3 ca me dérange pas de faire le cobaye, je suis un kamikaze aussi t'inquiète
si ta 2 ps3 je suppose que la 2éme elle est clean donne ton psnid ou ajoute moi !!
euh ben non j'ai les 2 en 3.41 une dans le salon et l'autre dans la chambre de mon fils, mais bon je te donne quand même mon psnid en MP, dis moi tu pourrai pas me patcher le firmware de waninkoko ? j'ai pas linux SNifffffffffff
salahpayne wrote:On Irc there were 3 fat bricks, be patient!!!!
whoaaaa, guess we're waiting then lol not happening right now
uh wasn't it slim bricks you actually saw?? from what I'm reading elsewhere there'd be a brick risk on the slims, maybe it bricks both, we'll be able to build a whole conference room with all these bricks
salahpayne wrote:Sur Irc y a eu 3 brick de fat patiente !!!!
houlaaaa, on va attendre hein lol c'est pas pour maintenant alors
euh c'est pas plutôt des brick de slim que tu a vu ?? d'après ce que je lis ailleurs il y aurait un risque de brick sur les slim, si ca se trouve ca brick les 2, on va pouvoir construire une salle de de conférence avec toutes ces brick
Tgames only uses the cookies the board needs (login, preferences). Embedded videos and audio (YouTube, Dailymotion, SoundCloud…) set their own cookies: they are only loaded with your consent. Learn more