Based on https://github.com/UmamusumeResponseAnalyzer/ura-core and largely leveraged umamusume-localify (https://github.com/GEEKiDoS/umamusume-localify) as a reference for:
- MsgPack deserialization
- CompressRequest / DecompressResponse functions analysis
- il2cpp structures definition
The few edits I added are mainly to look into the API calls the game makes. The debug config:
- saves the raw requests and responses to files in the "Packets" folder; you can inspect those with a HEX editor
- saves the JSON version of the request and response to files in the "Packets" folder
Haven't tested every endpoint, but most of them are readable, except for the race data: it has a field called "race_scenario" which is compressed & encrypted. E.g. below:
{
"data": {
"race_scenario": "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",
"race_start_info": {
"continue_num": 0,
"ground_condition": 1,
"program_id": 2220,
"race_horse_data": [
{
//etc.
}
]
//etc.
}
}
}I haven't gotten around to parsing that specific field yet (the game doesn't seem to call the two functions to read it / maybe the hook is incomplete (highly likely)). Probably a custom MsgPack ID as well, will have to analyze the requests in more detail.
The Release config is just a 60 FPS mode. You can build both configs with Visual Studio. Then place the output dll in the game directory (where the .exe is).
Add a manual field in the request's JSON to indicate the endpoint called. (still need to find a way to do this)
Then, seems quite difficult but the next goal will be to make a custom client to make requests to the game's server. This requires being able to replicate the encryption & compression the game does (RJ256 AES & LZ4 compression).
There's a "Gallop::Cryptographer" class, with several methods. Putting breakpoints in its methods yields the following chain, triggered when performing a network action in-game: "MakeMd5() -> CompressRequest() -> MakeMd5() -> EncryptRJ256() -> GenerateKeyString() -> DecompressResponse() -> DecryptRJ256()"
The ComputeHash() / Encode() / Decode() methods of the Cryptographer class never seem to trigger their breakpoints, although there seem to be in the assembly instructions list calls to similarly named functions, but from the System.Cryptography library. GenerateIvString() is never called either. A bit puzzled by the order of the calls, because for example, supposedly the data is first decompressed then decrypted but we still get readable data from hooking DecompressResponse() directly, and without needing to reverse DecryptRJ256().