Add EC Configuration Path patch

This commit is contained in:
Spotlight 2022-01-01 18:57:21 -06:00
parent c8559722ea
commit 8fe87fb4d5
No known key found for this signature in database
GPG Key ID: 874AA355B3209BDC
4 changed files with 45 additions and 1 deletions

View File

@ -7,4 +7,5 @@ It does not attempt to handle things such as client certificates or user passwor
- [`patch_overwrite_ios.md`](patch_overwrite_ios.md): An explanation over why and how IOS is patched for operation of the Wii Shop Channel.
- [`patch_custom_ca_ios.md`](patch_custom_ca_ios.md): The logistics of inserting our custom CA into IOS as well for EC usage.
- [`patch_base_domain.md`](patch_base_domain.md): Information about what URLs are present within the main DOL and information about patching them.
- [`patch_ec_title_check.md`](patch_ec_title_check.md): Information about title checks run by EC, and why they were negated.
- [`patch_ec_title_check.md`](patch_ec_title_check.md): Information about title checks run by EC, and why they were negated.
- [`patch_ec_cfg_path.md`](patch_ec_cfg_path.md): An explanation over why the path of `ec.cfg` is changed.

31
docs/patch_ec_cfg_path.md Normal file
View File

@ -0,0 +1,31 @@
# Patch: Change EC Configuration Path
## Motivation
We want to store our own custom credentials for the Wii Shop Channel.
Between provisioning tickets, identifying users, and permitting download, this is essential to our operation.
However, this file likely contains legitimate identifiers to Nintendo's services. We do not want to have users unable to download purchases of any kind should they wish.
While Nintendo's servers may reprovision credentials as part of syncing, we do not want to risk the possibility of such not occurring for whatever reason.
## Explanation
The Wii Shop Channel provides a file at `/title/00010002/48414241/data/ec.cfg`. It is utilized by every application that invokes EC - DLC applications, rentals, the Wii Shop, so forth.
This file contains persistent data, such as the provisioned account ID and device token, utilized for authentication. It additionally persists values such as the last sync time.
Other identifiers can be set via `ec.getPersistentValue(name)` or `ec.setPersistentValue(name, value)` within [ECommerceInterface](https://docs.oscwii.org/wii-shop-channel/js/ec/ecommerceinterface).
It is quite important that our changes do not modify or overwrite the user's existing credentials.
We evaluated several solutions:
- Not using account identifiers, and accepting any existing identifiers that hit our server.
- While most likely possible, it would be nice to not need to do so. Additionally for new clients, credentials we generate will not be accepted by Nintendo later.
- Similar to the above, utilizing our own set of identifiers via the exposed JS APIs with custom value names.
- This would prove complicated for similar reasons to the above.
- Modifying the configuration file's name.
- This is the most concise solution, and was chosen.
## Execution
We replace the only instance of `ec.cfg` with `osc.cfg`, where OSC refers to the Open Shop Channel.
A similar change will be necessary for any DLC titles wishing to take advantage of the Open Shop Channel's backend.

View File

@ -94,4 +94,5 @@ func applyDefaultPatches() {
applyPatchSet("Load Custom CA within IOS", LoadCustomCA())
applyPatchSet("Change Base Domain", PatchBaseDomain())
applyPatchSet("Negate EC Title Check", NegateECTitle)
applyPatchSet("Change EC Configuration Path", PatchECCfgPath)
}

11
patch_ec_cfg_path.go Normal file
View File

@ -0,0 +1,11 @@
package main
var PatchECCfgPath = PatchSet{
Patch{
Name: "Change EC Configuration Path",
AtOffset: 3319968,
Before: []byte("ec.cfg\x00\x00"),
After: []byte("osc.cfg\x00"),
},
}