Post: EXCLUSIVE: PS3 'Metldr' Exploit been 'leaked'
11-08-2011, 03:53 PM #1
-Daemon-
HELL IS HERE
(adsbygoogle = window.adsbygoogle || []).push({}); so it look like this news will be great for the dev out there and this could be great news if it work out meaning that this might get the master key of the ps3 which could open it right back up if i am right to believe so i look forward and i bet other people do to what happens next thanks to pscrunch for this amazing news


You must login or register to view this content.

Originally posted by another user
it seems to be a set of 'C' code and headers and an compiled ELF and SELF that exploits the 'chain of trust' to dump an 'unecrypted' version of your PS3 'metldr'.

Now of course this is not really 'useful' for the average PS3 Jailbreak end-user, but we think it just might be the long waited for 'golden tickets' in the right hard-working hands of some talented 'developers' that are willing to try to help everyone out by pushing the PS3 'scene' to the next level, that almost everyone here has all have been waiting for!



Program: metldr838exploit
Author: Unknown
Usage: Unknown
Reason: Unknown


THERE ABIT OF INFO ON THE DUMPING OF METLDR FROM You must login or register to view this content.

WELL HOPE YOU GUYS ENJOY THE NEWS AND JUST WAIT TO SEE WHAT HAPPEN WITH THIS GOOD NEWS THANKS FOR READING AND I TRY TO KEEP YOU POSTED ON THE NEWS

You must login or register to view this content.

UPDATE FROM Mathieulh

How to pwn metldr the "easy" way


Because some ungrateful person leaked my metldr exploit files I will now be explaining how it actually works, see this as my ultimate release of all times for an ungrateful scene (and scenes in the future)

That's about how I am pissed right now, because of course the person that leaked these files has no idea of how they actually work.

How to pwn metldr the "easy" way:
This is most likely how geohot exploited it in the first way, this takes (give or take) about 10 minutes to be performed. (yeah, not so much of a "I hacked the ps3 all on my own work, especially not when it partially relies on Segher's work, one of the reason geohot never shared the way he exploited metldr to anyone)

I will assume here, that you do not have the loader keys that were made readily available by geohot. This little tutorial also assumes that you have a working .self generating tool

Now You want to gain code execution to metldr, you know that metldr loads loaders to its own space, but you cannot run a loader because the loader needs to be signed and even though you know about the sign fail that Segher introduced at the CCC, you cannot use it because you don't have decrypted signatures to calculate a private key and to get signatures you need keys which you are currently trying to dump, so far you are stuck in a chicken and egg scenario.

The question is, do you really need keys to get a decrypted signature ?
Well the real answer is no, thanks to a nifty fail that sony left in in metldr (and the bootloader), you can have the ldr to decrypt the metadata for you, isn't that neat ?

Here's how it works:

STEP I)


In a self file, at address 0x0C a value is used to calculate where the metadata is going to be decrypted, the "offset" is at self header + 0x0C
its the "meta header offset" in the SCE structure, it takes the SCE offset + that value, so what you have to do is to have a calculation that is equal to 0x3E01F0 which happens to be where metldr copies over the shared metadata from the mailbox (which is sent over by the ppu), the trick is to have metldr to decrypt the metadata located at.
So basically you have to
1) set the offset += 0x2000
dump shared lsa
and keep increasing 0x2000
until somewhere in the shared lsa changes 0x40 byte
2) when it changes 0x40 bytes, you can add/subtract the proper amount to make it decrypt the proper locations
3) then dump shared lsa and we have decrypted header
knowing that metldr uses SCE header 0xECF0, you could calculate it knowing the address 0x3E01F0 - 0xECF0 = the value you would patch at SCE header + 0x0C

ROM:0000F6C0 D2 68 87 E6 metadata_erk: .int 0xD26887E6 ; DATA XREF: ROM:0000F178o
for example in CECHA , the address you want to decrypt it to is 0x3E1F0
so it should be 0x3E1F0 - 0xF6C0


Once you get the decrypted header, you have the key to decrypt the rest of the metadata. Here you go, you have your decrypted signature.

So far so good, now what's next ?

STEP II)

Contrary to popular beliefs, you do not need to know the public key to calculate the private key, you just need two decrypted signature, you now know how to dump these, so let's assume you just did, now all you have to do is to bruteforce the curve type by constantly reloading a self to metldr, the curve type being only 1 byte, that would be 64 possibilities.

CONGRATULATION, you just signed a loader !

Now what ?

Well Your first reflex would be to sign a loader and use it to dump whatever is in your Isolated Local Store, the first thing you will notice is that you have a bit of metldr's code as a leftover, after a few seconds of disassembly you will figure it's actually some piece of code that clears metldr's code and registers and jumps to some address which is matches your signed loader's entrypoint.

This seems like a more than likely candidate to exploit, as in your goal would be to overwrite that piece of code with your own, that way you would have the whole metldr code right before the point where everything gets cleared out.

Let's try to do just that, from your previous dump, you obviously know that the clear code is located from 0x400 to 0x630, (0x410 being where metldr jumps when it clears) your first attempt would naturally be to have a loader section to load at 0x400, well not so surprisingly, it fails, because you are not without a brain (at least you aren't supposed to be if you're reading and understanding this), you will assume that it is likely that metldr checks if you aren't loading your loader/self section below a certain address, which considering you know the loaders' entrypoint is most likely to be 0x12C00, this assumption is in fact correct as metldr will make sure you cannot load any loader at 0x12BFF and below, seems like a huge let down...

Well, maybe not, because yet again, you are not without a brain, you check out the hardware properties for the Local Store, and you find out that the memory wraps around (memory is a donut as someone once said at some ccc conference).

So what happens when you load your loader at let's say from 0x3F000 to 0x40000+some address? (like 0x40410 for example) ?

Well, it WORKS!
You could put the section at 0x3F000, if you made the length 0x1414 and the last instruction branches "up" to the dump code

ROM:000008AC 33 7F 6C 80 brsl lr, cleanup_and_jump_entry
ROM:000008B0 32 00 11 80 br loc_93C
ROM:00000410 cleanup_and_jump_entry: ; CODE XREF: main+4Cp
ROM:00000410 32 7F FF 80 br sub_40C
this is what the exploit that got leaked (yeah that's not really their work eh but you figured that much by now did you not? ) does.
It overwrites from 0x000 to 0x480 because I originally loaded the section o size 0x880 to 0x3FC00

So now you get code execution on metldr at the best time possible because your code executes right after metldr copies the root keys from 0x00 to 0x30, which means you get to dump these too. (Although they are hardcoded in metldr's code anyway)


Here you go, you have a metldr dump !

Now as a final line, I'd like to say screw leakers, screw the scene, and this is my last contribution to it EVER. It seems I can't even trust fellow developers to keep my work safe and not leaking it. (Not like any of them would have been able to tell you how all this even works in the first place)

So long, everyone.
Remember, don't ever bite the hands that feed you.

P.S. Oh! and btw, if you talented enough to make hardware to dump the shared lsa, you can decrypt any lv0 using this technique.


PS HE SEEM PISSED AND I MEAN PISSED OF THIS GOT LEAKED

You must login or register to view this content.

A TWEET FROM You must login or register to view this content. ON THE METADATA OFSET You must login or register to view this content.

Update #3 (11/9/2011): Developer lunuxx has released a tutorial on how to obtain your PS3′s root keys:

lunuxx says:

ohai ill tell you guys howto use mathldr
(i like to call it that, its kinda catchy)

prerequisites:
1. otheros++ with ss patches (yes the ones that cause trophy errors, just update when you wanna play games again and dont complain)
2. linux on your ps3 (im using ubuntu 10.10)
3. a unpacked copy of your flash (which you can obtain by using glevands dumpflash.pkg gitbrew.org/~glevand/ps3/pkgs/dump_flash.pkg) and an unpacked copy of ofw you will need the following files:
metldr
isoldr
RL_FOR_PROGRAM.img
EID0 (you will need to split eid from your flash [url=https://www.ps3devwiki.com/index.php?…s#dump_EID0.sh]Main Page - PS3 Development Wiki[/url])
spp_verifier.self
default.spp
and obviously appldr-metldrexploit350.self from the files
3. latest gitbrew linux kernel
4. a desire to quit *****ing and complaining and get off your ass.
**********************************************************************************************************************************

you can do this over ssh or on console I prefer ssh because my girlfriend likes to watch tv alot.

1. ssh into the ps3
2. download the files
a. wget You must login or register to view this content.
3. untar the files
a. tar -xvf metldr838exploit.tar.gz
4. enter the directory and compile
a. cd metldr838exploit.tar.gz; make
5 run the following commands now:
insmod ./metldrpwn.ko
cat metldr > /proc/metldrpwn/metldr
cat appldr-metldrexploit350.self > /proc/metldrpwn/mathldr
cat RL_FOR_PROGRAM.img > /proc/metldrpwn/rvkprg
cat eid0 > /proc/metldrpwn/eid0
echo 1 > /proc/metldrpwn/run
cat /proc/metldrpwn/debug
there now you have a dump check it out:
hd/proc/metldrpwn/dump | less
now copy the dump somewhere or youll lose it:
cp /proc/metldrpwn/dump /home/username/

there you go root keys are in 0×00 to 0×20 (first 3 lines)
example:
root erk: #
00000000 66 4d ee 51 65 6f 68 28 38 98 83 ea df ea 90 04 |fM.Qeoh(8…….|
00000010 01 f3 79 09 d6 a6 52 d9 ea 6d ef 04 51 69 ec 7b |..y…R..m..Qi.{|
root riv:
00000020 7d 6a 3a e5 37 ba 48 4c fe bd 26 5c f5 b1 28 1f |}j:.7.HL..&..(.|

btw this does not mean you get 3.60 keys etc or newer games but it will help you get some nifty things to do some new stuff…. also please be advised that if you are on 3.60+ you will need to downgrade with a flasher to do this, also if you have a unit that shipped from the factory with the metldr.2 (new metldr) your sol at the moment
oh thanx math
(adsbygoogle = window.adsbygoogle || []).push({});

The following 4 users say thank you to -Daemon- for this useful post:

Brentdevent, forcer911, killa skillz, TEXAS24_ReStEr
11-08-2011, 04:00 PM #2
zxz0O0
Are you high?
Lol I was just creating the same thread. :p Good that I checked again before pressing submit.
11-08-2011, 04:04 PM #3
-Daemon-
HELL IS HERE
Originally posted by zxz0o0 View Post
lol i was just creating the same thread. :p good that i checked again before pressing submit.


sorry about that bud but it all good news that will help the dev out there and give people some hope that ps3 might become wide open again lol or not
11-08-2011, 05:45 PM #4
new to me the other way of getting this is hard to do
11-08-2011, 06:00 PM #5
Colonel Shepard
Do a barrel roll!
Good news hope somthing good comes of this 😁
11-08-2011, 06:11 PM #6
p78ch201
Level 1 Trustworthy
[ATTACH=CONFIG]13292[/ATTACH]

Obsviously, if RichDevX knows that someone has modified something, then he just confirm he have the original version of it (my guess) and that he probably knows how to use it... (my guess again)..

This is just the confirmation that the PS3 scene is made of ppl who keep things for themselves and are not interested in giving the end user something (which are not that gratfull most of the times btw...)
11-08-2011, 06:32 PM #7
p78ch201
Level 1 Trustworthy
EDIT : Mathieulh just reveals some interesting news for those able to understand it :
source : You must login or register to view this content.

Originally posted by another user
How to pwn metldr the "easy" way
Because some ungrateful person leaked my metldr exploit files I will now be explaining how it actually works, see this as my ultimate release of all times for an ungrateful scene (and scenes in the future)

That's about how I am pissed right now, because of course the person that leaked these files has no idea of how they actually work.

How to pwn metldr the "easy" way:
This is most likely how geohot exploited it in the first way, this takes (give or take) about 10 minutes to be performed. (yeah, not so much of a "I hacked the ps3 all on my own work, especially not when it partially relies on Segher's work, one of the reason geohot never shared the way he exploited metldr to anyone)

I will assume here, that you do not have the loader keys that were made readily available by geohot. This little tutorial also assumes that you have a working .self generating tool

Now You want to gain code execution to metldr, you know that metldr loads loaders to its own space, but you cannot run a loader because the loader needs to be signed and even though you know about the sign fail that Segher introduced at the CCC, you cannot use it because you don't have decrypted signatures to calculate a private key and to get signatures you need keys which you are currently trying to dump, so far you are stuck in a chicken and egg scenario.

The question is, do you really need keys to get a decrypted signature ?
Well the real answer is no, thanks to a nifty fail that sony left in in metldr (and the bootloader), you can have the ldr to decrypt the metadata for you, isn't that neat ?

Here's how it works:

STEP I)


In a self file, at address 0x0C a value is used to calculate where the metadata is going to be decrypted, the "offset" is at self header + 0x0C
its the "meta header offset" in the SCE structure, it takes the SCE offset + that value, so what you have to do is to have a calculation that is equal to 0x3E01F0 which happens to be where metldr copies over the shared metadata from the mailbox (which is sent over by the ppu), the trick is to have metldr to decrypt the metadata located at.
So basically you have to
1) set the offset += 0x2000
dump shared lsa
and keep increasing 0x2000
until somewhere in the shared lsa changes 0x40 byte
2) when it changes 0x40 bytes, you can add/subtract the proper amount to make it decrypt the proper locations
3) then dump shared lsa and we have decrypted header
knowing that metldr uses SCE header 0xECF0, you could calculate it knowing the address 0x3E01F0 - 0xECF0 = the value you would patch at SCE header + 0x0C

ROM:0000F6C0 D2 68 87 E6 metadata_erk: .int 0xD26887E6 ; DATA XREF: ROM:0000F178*o
for example in CECHA , the address you want to decrypt it to is 0x3E1F0
so it should be 0x3E1F0 - 0xF6C0


Once you get the decrypted header, you have the key to decrypt the rest of the metadata. Here you go, you have your decrypted signature.

So far so good, now what's next ?

STEP II)

Contrary to popular beliefs, you do not need to know the public key to calculate the private key, you just need two decrypted signature, you now know how to dump these, so let's assume you just did, now all you have to do is to bruteforce the curve type by constantly reloading a self to metldr, the curve type being only 1 byte, that would be 64 possibilities.

CONGRATULATION, you just signed a loader !

Now what ?

Well Your first reflex would be to sign a loader and use it to dump whatever is in your Isolated Local Store, the first thing you will notice is that you have a bit of metldr's code as a leftover, after a few seconds of disassembly you will figure it's actually some piece of code that clears metldr's code and registers and jumps to some address which is matches your signed loader's entrypoint.

This seems like a more than likely candidate to exploit, as in your goal would be to overwrite that piece of code with your own, that way you would have the whole metldr code right before the point where everything gets cleared out.

Let's try to do just that, from your previous dump, you obviously know that the clear code is located from 0x400 to 0x630, (0x410 being where metldr jumps when it clears) your first attempt would naturally be to have a loader section to load at 0x400, well not so surprisingly, it fails, because you are not without a brain (at least you aren't supposed to be if you're reading and understanding this), you will assume that it is likely that metldr checks if you aren't loading your loader/self section below a certain address, which considering you know the loaders' entrypoint is most likely to be 0x12C00, this assumption is in fact correct as metldr will make sure you cannot load any loader at 0x12BFF and below, seems like a huge let down...

Well, maybe not, because yet again, you are not without a brain, you check out the hardware properties for the Local Store, and you find out that the memory wraps around (memory is a donut as someone once said at some ccc conference).

So what happens when you load your loader at let's say from 0x3F000 to 0x40000+some address? (like 0x40410 for example) ?

Well, it WORKS!
You could put the section at 0x3F000, if you made the length 0x1414 and the last instruction branches "up" to the dump code

ROM:000008AC 33 7F 6C 80 brsl lr, cleanup_and_jump_entry
ROM:000008B0 32 00 11 80 br loc_93C
ROM:00000410 cleanup_and_jump_entry: ; CODE XREF: main+4C*p
ROM:00000410 32 7F FF 80 br sub_40C
this is what the exploit that got leaked (yeah that's not really their work eh but you figured that much by now did you not? ) does.
It overwrites from 0x000 to 0x480 because I originally loaded the section o size 0x880 to 0x3FC00

So now you get code execution on metldr at the best time possible because your code executes right after metldr copies the root keys from 0x00 to 0x30, which means you get to dump these too. (Although they are hardcoded in metldr's code anyway)


Here you go, you have a metldr dump !

Now as a final line, I'd like to say screw leakers, screw the scene, and this is my last contribution to it EVER. It seems I can't even trust fellow developers to keep my work safe and not leaking it. (Not like any of them would have been able to tell you how all this even works in the first place)

So long, everyone.
Remember, don't ever bite the hands that feed you.
11-08-2011, 09:16 PM #8
Originally posted by p78ch201 View Post
[ATTACH=CONFIG]13292[/ATTACH]

Obsviously, if RichDevX knows that someone has modified something, then he just confirm he have the original version of it (my guess) and that he probably knows how to use it... (my guess again)..

This is just the confirmation that the PS3 scene is made of ppl who keep things for themselves and are not interested in giving the end user something (which are not that gratfull most of the times btw...)
why should they give you anything , reason why is you can not find this on your own now please stop bitching that there is no 3.72cfw again either do it yourself or hope they feel different when we know its doubtful
11-09-2011, 12:26 AM #9
ellanceo
Save Point
Srsly?

Math is such a baby I swear, and he obvious never had the end-user in mind whatsoever if he is crying like a little girl about his progress getting leaked. Sorry but the last time I checked the point of a "scene" is to share exploits, knowledge, and future endeavors so that others may improve, and collaborate on it.

Not sit there with a carrot on a string for months saying "I got it, you want it? You want it? Too bad!"

Good riddance Math, you brought nothing to the scene other than a sense of selfishness and hoarding. Sure, you obviously have done A LOT of work, but don't you think if you went about it another way instead of rubbing it in everyone's faces, maybe people would respect you more?

You said it yourself, "Don't bite the hand that feeds you", obviously insinuating you are the hand that feeds. Way to give yourself that oh-so-lofty title, bringer of all information.

Get over yourself you twat.

The following 7 users say thank you to ellanceo for this useful post:

Docko412, dubeyduck, eazynow82, PhantomRenegade, pman187, UnrealReality, UnTaMeD-KiD

The following 2 users groaned at ellanceo for this awful post:

casavult, shaneod
11-09-2011, 01:46 AM #10
tazzi
Can’t trickshot me!
Damm anyone actually checked out the code yet? No wonder maths pissed, check out the immense work thats been put into that!
I do wonder how many people are going to actually understand how to do this, Iv read it a few times, understand the concept, but still dont quite understand what "tools" are required to implement this.
Is this all done through the ps3? or do we need to dump the metldr and work from there?

Its like watching a movie from half way, you got no clue whats going on cause you missed the beginning!!!!

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo