Homebrew Merry Christmas - Have some RAM Dumping!

Bug_Checker_

Well-Known Member
Member
Joined
Jun 10, 2006
Messages
950
Trophies
0
XP
664
Country
United States
Yeah it seems like the blacklisted every single nick out there xD

Wrong timing for me to join I guess.

A lot of the dev wikis (dsibrew/wiibrew/wiiubrew/3dbrew) get account creation bots spamming links for people looking to influence seo.
Usually, because they haven't updated their software.

There was a time when spamming was so bad that innocent people got caught up in friendly fire.

 

mathieulh

Well-Known Member
Member
Joined
Feb 28, 2008
Messages
378
Trophies
0
Website
keybase.io
XP
897
Country
France

Says :
"WE HACKED IT TOO!!!
megazig
xerpi
Fierce Waffle"



Not to kill the mood or anything but you just need to compile an ARM9 payload to use along the rsa_verify request exploit.
The exploit has now been public for several days here https://github.com/naehrwert/p3ds/blob/master/3dsploit.py
and addresses such as the ones for fopen, fwrite... can be bruteforced rather easily.
There should be about 20ish people that can run an ARM9 payload hanging around the #3dsdev channel right now.

All in all, I'd say your initial ram dumper (using ROPs) was a lot more impressive than this, as running an ARM9 payload was just a matter of following each ROP in the chain from the gateway Launcher.dat file once you had a valid ram dump.

What I find astonishing is the amount of people who do not know how the bug technically works, they know from the launcher.dat that they need to use specific ROP gadgets in a specific sequence to trigger the exploit, they know what some/most of the ROP gadgets do, they know where to paste their payload, but they don't know much beyond that, they don't know that the bug is actually tied to a huge rsa_verify request for which the lenght isn't checked, they don't know that the payload written by gateway's ROP chain at 0x080C3EE0 is copied somewhere in the 0x20000000 area by the kernel and what triggers it to jump to the code later on.

I just find it sad that so many people just reuse what's written by the Gateway engineers, only caring about the end result and not knowing how it actually works in the first place, even though it's very interesting from an educational standpoint.

Ok, that was just my 2 cents xD
 

Kane49

Well-Known Member
Member
Joined
Nov 4, 2013
Messages
446
Trophies
0
Age
36
XP
343
Country
Gambia, The
While the exploit is obviously a piece of genius and I can appreciate what it took to discover / utilize it, it is still only a piece of the puzzle and its one that has already been solved.

Personally I'm grateful for every layer of abstraction that allows me not to care about the internals as much, that doesn't mean they are any less important. For example I like coding in c but I hate asm with a fiery passion ^^
 

aliak11

Pokemon Master
Member
Joined
Dec 5, 2010
Messages
195
Trophies
1
Age
29
Location
Florida
XP
1,108
Country
United States
While the exploit is obviously a piece of genius and I can appreciate what it took to discover / utilize it, it is still only a piece of the puzzle and its one that has already been solved.

Personally I'm grateful for every layer of abstraction that allows me not to care about the internals as much, that doesn't mean they are any less important. For example I like coding in c but I hate asm with a fiery passion ^^

Same here, I understand c/c++, but am having a hard time trying to figure out asm.
 

xyzmanas

Well-Known Member
Member
Joined
Jun 7, 2013
Messages
124
Trophies
0
Age
34
XP
173
Country
Not to kill the mood or anything but you just need to compile an ARM9 payload to use along the rsa_verify request exploit.
The exploit has now been public for several days here https://github.com/naehrwert/p3ds/blob/master/3dsploit.py
and addresses such as the ones for fopen, fwrite... can be bruteforced rather easily.
There should be about 20ish people that can run an ARM9 payload hanging around the #3dsdev channel right now.

All in all, I'd say your initial ram dumper (using ROPs) was a lot more impressive than this, as running an ARM9 payload was just a matter of following each ROP in the chain from the gateway Launcher.dat file once you had a valid ram dump.

What I find astonishing is the amount of people who do not know how the bug technically works, they know from the launcher.dat that they need to use specific ROP gadgets in a specific sequence to trigger the exploit, they know what some/most of the ROP gadgets do, they know where to paste their payload, but they don't know much beyond that, they don't know that the bug is actually tied to a huge rsa_verify request for which the lenght isn't checked, they don't know that the payload written by gateway's ROP chain at 0x080C3EE0 is copied somewhere in the 0x20000000 area by the kernel and what triggers it to jump to the code later on.

I just find it sad that so many people just reuse what's written by the Gateway engineers, only caring about the end result and not knowing how it actually works in the first place, even though it's very interesting from an educational standpoint.

Ok, that was just my 2 cents xD

Could you please point towards more stuff which explains the working of this exploit in detail relating to code injection.
 

xyzmanas

Well-Known Member
Member
Joined
Jun 7, 2013
Messages
124
Trophies
0
Age
34
XP
173
Country
It's no secret that the x86 ISA is an abomination. ARM or AVR on the other hand is a joy even when it gets down to counting cycles :)

Is Arm ASM much different from the 8086 MP ASM i did in college? I mean except the number and size of registers are the commands same?
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,321
Country
United Kingdom
Is Arm ASM much different from the 8086 MP ASM i did in college? I mean except the number and size of registers are the commands same?

I have not dropped down as low as 8086 (where real mode and protected mode appear is where I came in there, with the GBA and DS it was basically all Real mode though but that changed a bit for the 3ds it seems) and I am hesitant to blindly assume the Z80 stuff is similar enough without checking. However reading through the instructions and memory handling (and allowing for the extras the GBA/DS and presumably 3ds BIOS/coprocessing capabilities will afford) you are not going to be out of your depth like if you were thrown into the deep end with modern X64 and told to play with SIMD and all the nice multimedia stuff.

The GBA and DS has no divide (though the coprocessor has it), no floating point either. The GBA and DS stuff has THUMB mode but that is not so hard to wrap your head around (16 bit instructions but with 32 bit registers). Likewise memory handling is usually done by DMA (which is usually quite civil and without too many odd quirks) and dedicated instructions (you can not mov to or from an address or anything, only limited immediates* and registers). Likewise the amount of registers is enough that instructions become generic unlike some of the SNES stuff were they would have mov equivalents for each (all three of them if you count the accumulator) of the general registers. The ARM stuff is also a great fan of shifting

*you need to fit the immediate and the command into the instruction. Your assembler will probably have psuedo instructions to sort this (ROP might be a different matter of course) and you can do things like movn to inverse the value of your immediate or referenced register.

Have a read of http://www.coranac.com/tonc/text/asm.htm , http://quirkygba.blogspot.com/2008/12/things-you-never-wanted-to-know-about.html http://drunkencoders.com/files/2013/03/unequivocal-answer.html and http://nocash.emubase.de/gbatek.htm
If you want to get a bit more general http://www.heyrick.co.uk/assembler/ and http://www.heyrick.co.uk/armwiki/Main_Page

The ARM manuals are also free and worth a look.

Speaking to people and scanning around http://www.3dbrew.org/wiki/Main_Page it seems the 3ds gained a few more features and now more closely resembles a system developed this century (which is to say it has a kernel and the idea of userland) but that will probably be nothing too hard to work with/around.
 

minexew

ayy lmao
Member
Joined
Mar 16, 2013
Messages
228
Trophies
0
XP
284
Country

Great summary. Only thing (maybe obvious) I'd like to add is that there is still quite the gap between coding with devkitPro in C++ vs. building a ROP chain from assembly gadgets. Which is why I'm glad that we have an ARM9 loader now. The possibility of 3DS homebrew has never been so real.
Also +1 for mentioning Noca$h GBAtek, it's pretty much the dream of every hardware hacker coming true. I read noca$h docs before sleep for the pure enjoyment, they're just wonderful :lol:
 

Snailface

My frothing demand for 3ds homebrew is increasing
Member
Joined
Sep 20, 2010
Messages
4,324
Trophies
2
Age
40
Location
Engine Room with Cyan, watching him learn.
XP
2,255

samljer

Well-Known Member
Member
Joined
Oct 4, 2012
Messages
157
Trophies
0
XP
241
Country
Canada
I hope something comes of this, id love to finally put Gateway3DS to rest; dont trust those guys.
a real rom loader would be sweet.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: https://youtube.com/shorts/WOppJ92RgGU?si=KE79L6A_3jESsGQM