ExeFS patches for various Nintendo Switch sysmodules, intended to be loaded by Atmosphère-loader.
First, make sure you're using Atmosphère's loader reimplementation. This is most commonly done via hekate.
Download this repository as a .zip file using the green "Clone or download" button found above the file listing. To install all the patches, you can extract it to to the root of your microSD card. Alternatively, you can copy over only the patches you are interested in.
Patch Name | Type | 1.0.0 | 2.0.0 | 2.1.0 | 2.2.0 | 2.3.0 | 3.0.0 | 3.0.1 | 3.0.2 | 4.0.0 | 4.0.1 | 4.1.0 | 5.0.0 | 5.0.1 | 5.0.2 | 5.1.0 | 6.0.0 | 6.0.1 | 6.1.0 | 6.2.0 | 7.0.0 | 7.0.1 | 8.0.0 | 8.0.1 | 8.1.0 | 9.0.0 | 9.0.1 | 9.2.0 | 10.0.0 | 11.0.0 | 11.0.1 | 12.0.0 | 12.0.1 | 12.0.2 | 12.0.3 | 12.1.0 | 13.0.0 | 13.1.0 | 13.2.0 | 13.2.1 | 14.0.0 | 14.1.0 | 14.1.1 | 15.0.0 | 16.0.0 | 16.0.2 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
disable_ca_verification | ExeFS | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
disable_browser_ca_verification | NRO | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ? | ? | ? |
am_dev_function | ExeFS | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
fatal_force_extra_info | ExeFS | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
vi_debug | ExeFS | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
capsrv_debug | ExeFS | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
nifm_ctest | ExeFS | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
Thanks to: SciresM (original patches), Adubbz (porting assistance), misson20000 (porting), tesnos (porting), simontime (porting), thomasnet (porting),Behemoth (porting), and borntohonk (porting).
Affected Titles: ssl
Disables certificate authority verification on SSL requests made by sysmodules.
Thanks to: thomasnet, RTNX, and amicuchu (porting)
Affected Titles: BrowserDll
Disables certificate authority verification on SSL requests made by browsers.
Thanks to: misson20000
Affected Sysmodules: am
Forces the check for am.debug!dev_function
setting to always pass. This allows use of CreateSelfLibraryAppletCreatorForDevelop.
Search for dev_function
string. There should be one xref, to a function that loads various settings and assigns them to global flags.
Find where the dev_function
flag is written, and change the and w8, w8, w9
instruction before it to orr w8, w8, #1
or equivalent.
; function listing from 6.0.0
SUB SP, SP, #0x30
STR X19, [SP,#0x20+var_10]
STP X29, X30, [SP,#0x20+var_s0]
ADD X29, SP, #0x20
; query am.debug
ADRP X19, #aAmDebug@PAGE ; setting class "am.debug"
ADD X19, X19, #aAmDebug@PAGEOFF ; "am.debug"
ADRP X3, #aDevFunction@PAGE ; setting key "dev_function"
ADD X3, X3, #aDevFunction@PAGEOFF ; "dev_function"
MOV X0, SP ; output buffer
MOV W1, #1 ; setting size
MOV X2, X19 ; setting class
BL query_setting ; query_setting(&dev_function, 1, "am.debug", "dev_function")
LDRB W9, [SP,#0x20+var_20] ; load value from output buffer
; compute flag value based off query_setting
; return value and retrieved setting value
CMP X0, #1
ADD X0, SP, #0x20+var_1C
CSET W8, EQ
CMP W9, #0
CSET W9, NE
; this is the instruction I patch
ORR W8, W8, #1 ; Keypatch modified this from:
; AND W8, W8, W9
; prepare for the next query_setting
ADRP X9, #g_dev_function_flag@PAGE
ADRP X3, #aAbortOnSaLost@PAGE ; "abort_on_sa_lost"
ADD X3, X3, #aAbortOnSaLost@PAGEOFF ; "abort_on_sa_lost"
MOV W1, #1
MOV X2, X19
; store the previous setting
STRB W8, [X9,#g_dev_function_flag@PAGEOFF]
Thanks to: misson20000
Affected Sysmodules: fatal
Forces the check for fatal!show_extra_info
setting to always pass. This causes the fatal error screen to show the title id, aslr base, and a backtrace of the process that caused the fatal error state.
This patch works as an alternative to overwriting the setting via set:fd
.
Thanks to: Behemoth
Affected Sysmodules: vi
Ignores debug settings value to enable caps:sc
1201-1203 and 1204 for 9.0.0-9.2.0.
Thanks to: Behemoth
Affected Sysmodules: capsrv
Ignores global debug flag to enable DeleteAlbumFileByAruidForDebug and LoadMakerNoteInfoForDebug.
Thanks to: Behemoth
Affected Sysmodules: nifm
Skips connection test to allow connections to networks without internet access or dns wildcard blocks (e.g. *nintendo*).