Ces modifications vont permettre de mettre les mêmes fonctionnalités que les dongles, mais pour n'importe quel firmware, 3.55 y compris.
Attention, il s'agit d'outils à utiliser avec beaucoup de précautions.
Ces outils sont pour l'instant au nombre de 3 et sont en fait des scripts python permettant de :
- resign_self.py: Permet de remplacer automatiquement n'importe quel segment dans un self et de re-signer le self, afin que les signatures et le hash soient valides. Similaire à makeself mais ceci est plus adapté au patch de lv1 et lv2 (et à été testé dans ce but).
- insert_lv1_lv2.py: Script pour faire un lv1.self et lv2_kernel.self modifié et re-signé. Il crée également un fichier PUP qui est identique à l'original sauf pour ces 2 fichiers.
- lv1dumper (application à compiler): (Attention, application dangereuse pouvant causer des bricks)Application qui est lancée sur la PS3 que vous pouvez compiler en utilisant PSL1GHT et les outils de Geohot. Après l'avoir lancé, lv1 sera mappé à 0x8000000014000000 avec des accès en lecture et écrite, et vous pourrez faire un "poke" du LV2 sans que la PS3 s'éteigne (il s'agit d'une protection instaurée par Sony, qui est ici supprimée). Ca désactive la nouvelle protection du hash de la mémoire lv2 intégré par Sony dans le firmware 3.55 (probablement pour stopper les jailbreaks USB futurs).
Je laisse la suite en anglais vu qu'elle est technique et que seuls les développeurs devraient utiliser ces outils de toute façon :
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.
Je vous recommande d'attendre des Custom Firmwares déjà patchés ou demandant le moins d'étapes, pour éviter au maximum le brick !
Site officiel : http://flukes1.com/post/2779013293/ps3#post:2779013293