Skip to content

Synthlight/MHWilds-Neuter-Encryption

Repository files navigation

The game has a lot of encrypted variables for things; health, stamina... lots of things.

The int32s (via.rds.Mandrake) are all a fairly simple math doing the encryption in about 5 or so ops.
These, unfortunately, are inlined most of the time so there's no simple way to just improve performance.

The floats though (via.rds.Dahlia), are, for some insane reason, encrypted with AES, and there are literally thousands of accesses to floats per second.
That's what this plugin changes. It replaces the encrypt/decrypt functions for floats to just return the unencrypted value directly.

Installation

Extract the DLL so it winds up in REF's plugin dir, like so: reframework\plugins\Neuter_Encryption.dll

Performance Gains

Without This

Without This

With This

With This So it's not super huge, but it does indeed help.

Troubleshooting

This will create a log files right next to the EXE. (Same name, just extension changed from DLL to LOG.)

If it's not making a log, then REF probably isn't installed.
If you've got a log, and it's working, it'll look something like this:

2026-01-09 18:36:39	Initializing.
2026-01-09 18:36:39	Attaching proxy.
2026-01-09 18:36:44	Module base address: 140000000
2026-01-09 18:36:44	Module size: 23CDF000
2026-01-09 18:36:44
2026-01-09 18:36:44	Scanning for Neuter Dahlia Float Encrypt bytes.
2026-01-09 18:36:44	Found 1 match(es).
2026-01-09 18:36:44	Inject address: 1400541B0 (MonsterHunterWilds.exe + 541B0)
2026-01-09 18:36:44	New mem bytes: 49,8B,00,48,89,01,49,8B,40,08,48,89,41,08,48,8B,C1,C3
2026-01-09 18:36:44
2026-01-09 18:36:44	Scanning for Neuter Dahlia Float Decrypt bytes.
2026-01-09 18:36:47	Found 1 match(es).
2026-01-09 18:36:47	Inject address: 14A43F020 (MonsterHunterWilds.exe + A43F020)
2026-01-09 18:36:47	New mem bytes: 49,8B,00,48,89,01,49,8B,40,08,48,89,41,08,48,8B,C1,C3
2026-01-09 18:36:47
2026-01-09 18:36:47	Patching done!

Build

Clone https://github.com/Synthlight/Base-Dll-Proxy so it winds up in the same parent dir as this.
e.g.:

\Plugin Mods\Base-Dll-Proxy
\Plugin Mods\Neuter-Encryption

Then just open this and build. This does have pre-set post-build copy commands that will probably fail on your system.

Credits

Thanks to cola for finding & creating the AoB scans and replacement bytes.
All I've (LordGregory) done is just put them in a plugin to patch the assy on startup.

About

Neuters some encrypt/decrypt AES calls that occur thousands of times a second. Just keep the data decrypted.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors