I once tried an early GTA V multiplayer mod, pre-FiveM, that used .NET as a basis. They didn't apply any protection to their mod DLL though, and it was trivial to modify it in any way one liked with DnSpy.
I used it to completely automate a grindy task on a server complete with chat hooks, and automatic teleportation to sell the items and back. And also implemented a trainer of sorts with all sorts of functions. The networking didn't appear to handle the teleportation well, and to anyone else my character never moved.
I ultimately didn't use it as an advantage in any meaningful way, I only played to see how far I could mod it and stopped, but never used it against anyone, and stopped playing once I was satisfied with my ill-gotten gains rotting on my account.
Reported it to the devs afterwards, who seemed disinterested but did at least obfuscate the binary, but neglected to do the same to the client JS API loader, so I used that to inject custom client scripts and override server supplied client code.
I'm sure people could do more interesting stuff with BepinEx/Harmony these days, but I never had enough inclination in .NET to learn to implement those. But it was still really fun to twist the game around like that.
these days you can open the devtools for the web-based inventory systems and start sending malicious events straight from the console. filed as not-a-bug...
I used it to completely automate a grindy task on a server complete with chat hooks, and automatic teleportation to sell the items and back. And also implemented a trainer of sorts with all sorts of functions. The networking didn't appear to handle the teleportation well, and to anyone else my character never moved.
I ultimately didn't use it as an advantage in any meaningful way, I only played to see how far I could mod it and stopped, but never used it against anyone, and stopped playing once I was satisfied with my ill-gotten gains rotting on my account.
Reported it to the devs afterwards, who seemed disinterested but did at least obfuscate the binary, but neglected to do the same to the client JS API loader, so I used that to inject custom client scripts and override server supplied client code.
I'm sure people could do more interesting stuff with BepinEx/Harmony these days, but I never had enough inclination in .NET to learn to implement those. But it was still really fun to twist the game around like that.