
2: The arm11code payload is downloaded by requesting a binary with http, see the above example config and ropgen_httpdownload_binary() in 3dsbrowserhax_common.php.1: The arm11code payload is loaded from SD via this filepath: "sdmc:/arm11code.bin".

0: The arm11code payload is embedded in the ROP-chain data itself.This was originally implemented a while after the regionfree method with NSS:RebootSystem was originally discovered: This can be used for region-free on system-versions below v7.0. 4: This uses the service-access-control bypass fixed with system-version v7.0, then it uses NSS:RebootSystem.At the start of this ROP-chain, the sub-screen colorfill is set to display red, at the end it's set to display blue. 3dsbrowserhax_common.php must be modified in order to use this, see generateropchain_type3(). 3: Read the contents of a file then dump it to SD.At the start of this ROP-chain, the sub-screen colorfill is set to display yellow, at the end it's set to display gray. The max payload filesize is 0x8000-bytes. r1 is initialized too for a relocated stack address if the payload needs it. The payload is called with r0 set to an address of a structure mainly containing funcptrs for various functions in the process, see generateropchain_type2(). The payload should be position-independent-code without any GOT, since the payload is loaded to R-X memory where the address varies per title version. 2: ARM11-code loading via gspwn, see $arm11code_loadfromsd below.1: Hence, throw_fatalerr() will be triggered when the above browserhaxcfg_handledefault() path is executed when browserhaxcfg_handledefault() doesn't initialize $ropchainselect. 0: This "ROP-chain" is just an address for THROW_FATALERR.Next, regardless of browser-version, it then calls browserhaxcfg_handledefault(). When this is with a spider version prior to system-version v7.1, $ropchainselect will be set to value1. If you want to test a browser exploit on an unsupported browser version just to see if it at least crashes, you can use this: "URL?browserver=" gadget: "$somestr.= genu32_unicode($POPPC) "īy default, when $ropchainselect wasn't initialized by browserhaxcfg_handle_urlparams(), it will set $ropchainselect to value0 and $arm11code_loadfromsd to value2. 7 v6144 10.6.0-31 KOR is "supported" for this but it's not tested.New3DS system Internet Browser(SKATER) (see also ): 1.7538 v0 4.2.0-9.4.5.0-10 This is the first version of the CHN+KOR (and probably TWN) browser.

Old3DS system Internet Browser(spider) (see also ): Note that for CHN and TWN the loader(with 3ds_arm11code_chntwn.s) is broken(the menustub fails to auto-locate APT_GetServHandle due to older homemenu/ctrsdk code). Only the USA, EUR, and JPN browsers are supported(with the exception listed below): the main ExeFS codebin are all identical for these regions, unlike the other regions. Normally doing so isn't needed since the *hax payloads don't support system-versions that old anyway. Loading arm11code with the Old3DS browser is only supported with >=v5.0 NATIVE_FIRM, if you want to use pre-v5.0 NATIVE_FIRM with this you would have to modify the source.

Due to this, when accessing hax with this, the New3DS system web-browser must be set to use the normal user-agent, not the mobile user-agent(the mobile user-agent is the same for all versions).Īlso note that with the system web-browser, only the last number in the system-version(X.X.X-NUPVER) actually matters for the browser version. Which browserver(target title + version of the title) to use is automatically determined by checking the user-agent. The versions below are listed in the following format: browserver titlever sysver. Browser exploits seperate from this repo can use this for the actual ROP-chain + any required ROP gadgets etc. This repo is for generating ROP-chains for use with the previously mentioned targets: no browser exploit(s) are contained in this repo. This repo is for intended for any 3DS title which has some form of web browser.
