techiew/EldenRingEacToggler

Wondering about winhttp.dll

Closed this issue ยท 4 comments

Hello, I appreciate the cool repository you've shared and I have a basic question I hope you can answer.

Although you provided a brief description of winhttp.dll, i still couldn't fully understand its purpose.
It's simply redirecting to original call, doing nothing special in it like intercepting params or doing additional work.

So is it just for acting as a failsafe mechanism to prevent accidental launching of the game with the original protected executable, which could lead to getting banned?

Yep, it's just a failsafe. I wanted to give a guarantee that the toggler will never let the game launch into online mode if you've toggled it to offline mode. Specifically considering you could have external tools modifying the game which could make EAC react.

Both start_protected_game.exe and eldenring.exe can be overwritten in a game update, which would make the game launch into online mode again. The only way to stop this from happening was to create a proxy DLL that makes EAC freak out and stop loading the game.

Thank you for the really informative answer. It's interesting.
So you implemented redirecting stuff in winhttp but can it really be whatever? im not that familiar with EAC, why u made it that way?

Instead of winhttp.dll, it could be a proxy DLL of any of the other DLLs loaded by the game (also known as "modules" - the .exe itself is also a module):
image

When it comes to game mods that utilize DLL proxying, most of the time they will use dinput8.dll, d3d12dll, d3d11.dll, dxgi.dll, etc. (usually something related to the renderer the game is using). I don't know why those specifically, there can be many reasons. They might have less exports than the other DLLs (so it's less work to set up the proxy), or the specific order in which the DLL is loaded is important. Also from experience, if you screw up your proxying you can really confuse the heck out of the application, so proxying DLLs that aren't as close to the system in contrast to user32.dll for example, could cause "less" of a freakout I guess. Also IIRC some DLLs will just refuse to be proxied for some reason.

There are tools out there that automatically generate the files you will need for DLL proxying, such as the .def file, the exports themselves, and some assembly files. I am currently working on my own small project that will be a plug-and-play DLL proxy, which would let you easily proxy the most common DLLs with hardly any work.

Thanks dude, although im not familiar with game modding, your info helped me grasp the image a bit. ๐Ÿ“
Thank you so much โค๏ธโ€๐Ÿ”ฅ