diff --git a/Makefile b/Makefile index 8ef1312..5035614 100644 --- a/Makefile +++ b/Makefile @@ -65,6 +65,7 @@ src/main.o src/sm_image_index.o: FORCE src/sm_l10n.o: $(L10N_CATALOGS) src/sm_ampr_updater.o: src/sm_ampr_ca.inc +src/sm_shellcore_offsets.o: src/sm_shellcore_offsets.inc .PHONY: FORCE FORCE: diff --git a/src/sm_kstuff.c b/src/sm_kstuff.c index 8645886..9c9cf26 100644 --- a/src/sm_kstuff.c +++ b/src/sm_kstuff.c @@ -384,8 +384,15 @@ static bool resolve_kstuff_sysentvec_addrs(intptr_t *ps5_out, intptr_t *ps4_out) case 0x13000000: case 0x13200000: - *ps5_out = KERNEL_ADDRESS_DATA_BASE + 0xddd8a8; - *ps4_out = KERNEL_ADDRESS_DATA_BASE + 0xddda20; + *ps5_out = KERNEL_ADDRESS_DATA_BASE + 0xddd8b8; + *ps4_out = KERNEL_ADDRESS_DATA_BASE + 0xddda30; + return true; + + case 0x13400000: + case 0x13420000: + case 0x13600000: + *ps5_out = KERNEL_ADDRESS_DATA_BASE + 0xddd8f8; + *ps4_out = KERNEL_ADDRESS_DATA_BASE + 0xddda70; return true; default: diff --git a/src/sm_shellcore_offsets.inc b/src/sm_shellcore_offsets.inc index b20ffa5..4672ca1 100644 --- a/src/sm_shellcore_offsets.inc +++ b/src/sm_shellcore_offsets.inc @@ -454,4 +454,44 @@ .bridge_cave_size = 0x2060u, .sandbox_call_target_offset = 0x1887e20u, .targets = {{.offset = 0x648660u, .patch_size = 12u}, {.offset = 0x693c99u, .patch_size = 5u}, {.offset = 0x2e0320u, .patch_size = 12u}, {.offset = 0x2dd3d0u, .patch_size = 12u}}, + }, + { + .firmware = 0x1300u, + .name = "13.00", + .bridge_cave_offset = 0x1958090u, + .bridge_cave_size = 0x3f70u, + .sandbox_call_target_offset = 0x1951d40u, + .targets = {{.offset = 0x688db0u, .patch_size = 12u}, {.offset = 0x6d49d7u, .patch_size = 5u}, {.offset = 0x31f6e0u, .patch_size = 12u}, {.offset = 0x31c790u, .patch_size = 12u}}, + }, + { + .firmware = 0x1320u, + .name = "13.20", + .bridge_cave_offset = 0x19619f0u, + .bridge_cave_size = 0x2610u, + .sandbox_call_target_offset = 0x195b6a0u, + .targets = {{.offset = 0x68d600u, .patch_size = 12u}, {.offset = 0x6d9227u, .patch_size = 5u}, {.offset = 0x31ff20u, .patch_size = 12u}, {.offset = 0x31cfd0u, .patch_size = 12u}}, + }, + { + .firmware = 0x1340u, + .name = "13.40", + .bridge_cave_offset = 0x1961b70u, + .bridge_cave_size = 0x2490u, + .sandbox_call_target_offset = 0x195b820u, + .targets = {{.offset = 0x68d780u, .patch_size = 12u}, {.offset = 0x6d93a7u, .patch_size = 5u}, {.offset = 0x3200a0u, .patch_size = 12u}, {.offset = 0x31d150u, .patch_size = 12u}}, + }, + { + .firmware = 0x1342u, + .name = "13.42", + .bridge_cave_offset = 0x1961b70u, + .bridge_cave_size = 0x2490u, + .sandbox_call_target_offset = 0x195b820u, + .targets = {{.offset = 0x68d780u, .patch_size = 12u}, {.offset = 0x6d93a7u, .patch_size = 5u}, {.offset = 0x3200a0u, .patch_size = 12u}, {.offset = 0x31d150u, .patch_size = 12u}}, + }, + { + .firmware = 0x1360u, + .name = "13.60", + .bridge_cave_offset = 0x1962700u, + .bridge_cave_size = 0x1900u, + .sandbox_call_target_offset = 0x195c3c0u, + .targets = {{.offset = 0x68e330u, .patch_size = 12u}, {.offset = 0x6d9f57u, .patch_size = 5u}, {.offset = 0x320c40u, .patch_size = 12u}, {.offset = 0x31dcf0u, .patch_size = 12u}}, } diff --git a/src/sm_shellcore_remote.c b/src/sm_shellcore_remote.c index 0c344ca..1d0dddd 100644 --- a/src/sm_shellcore_remote.c +++ b/src/sm_shellcore_remote.c @@ -62,7 +62,7 @@ static uintptr_t resolve_vmspace_pmap(uintptr_t vmspace) { return vmspace + 0x2c0u; if (version >= 0x0105u && version <= 0x0550u) return vmspace + 0x2e0u; - if (version >= 0x0600u && version <= 0x1270u) + if (version >= 0x0600u && version <= 0x1360u) return vmspace + 0x2e8u; return 0; }