STEAM GROUP
Steam Client Beta SteamBeta
STEAM GROUP
Steam Client Beta SteamBeta
22,178
IN-GAME
74,481
ONLINE
Founded
January 8, 2013
All Discussions > Beta Feedback > Topic Details
HK-47 Feb 1, 2024 @ 11:07am
GameOverlayRenderer.dll still injected in game process when Steam Overlay is disabled
Which part of "Disabled" your developers do not understand, Valve?

I have Steam Overlay disabled for Mass Effect 3, and just now the game hanged on me. I made a crashdump and after analyzing it I noticed a lot of GameOverlayRenderer.dll functions interspersed throughout the game process call stack.

What the f*ck?!?

DISABLED means NOT INJECTED INTO GAME.

DISABLED doesn't mean INJECTED WITH KEYBOARD SHORTCUT DISABLED.

Fix it FFS.
< >
Showing 1-15 of 16 comments
Kaldaien Feb 2, 2024 @ 9:51pm 
:rofl:

Yeah, this is annoying. The only way to keep it out of your games is to go into the file properties for the DLL and add a DENY entry for Execute permissions.

Properties | Security | (your user account), Edit:

    Read & Execute: DENY

Eventually Valve's going to make even this solution non-functional, and then you should just stop buying games on Steam altogether.
Last edited by Kaldaien; Feb 2, 2024 @ 9:54pm
HK-47 Feb 6, 2024 @ 8:48am 
Originally posted by Kaldaien:
:rofl:

Yeah, this is annoying. The only way to keep it out of your games is to go into the file properties for the DLL and add a DENY entry for Execute permissions.

Properties | Security | (your user account), Edit:

    Read & Execute: DENY

Eventually Valve's going to make even this solution non-functional, and then you should just stop buying games on Steam altogether.

It works, thanks for the idea.
Last edited by HK-47; Feb 6, 2024 @ 8:59am
HK-47 Feb 7, 2024 @ 12:13pm 
I spoke too soon -- Steam resets permissions on the next launch so after launching Steam you have to redo it.

I ended up setting the files to have:
Domain Admins Full Control Allow Everyone Read & Execute Deny
And I set the owner to Domain admins after that (I have a domain).

It tried resetting on the next launch but it failed and created a file called:
.ntfs_transaction_failed
Let's see them override that. F*ckers...
Last edited by HK-47; Feb 7, 2024 @ 12:15pm
jmccaskey Feb 7, 2024 @ 4:26pm 
Sorry, but it's not a bug. The disable setting for the overlay disables the separate overlay UI process and much of the logic in GameOverlayRenderer.dll, but despite it's name GameOverlayRenderer.dll actually provides additional Steamworks and Steam features inside the game process beyond just the overlay.

You can go ahead and try to block it functioning as you have, but you can expect some sets of Steam functionality like Steam Input / gamepad support, in-home/remote streaming, and more to be fully broken.

The dll appearing in the callstacks you looked at for a hang in Mass Effect isn't really evidence it's related at all. It will hook into some function calls and can appear, when all it's doing is passing through calls. Further, you won't have debug symbols for Mass Effect or for the overlay, so your callstacks are likely all inaccurate after you hit the first stack frame that doesn't have public symbols from Microsoft. Without looking at the callstack (and possibly without having Mass Effect 3 symbols) I can't tell you what did cause the hang, but it's very likely not the overlay dll.

I'd suggest you don't try to prevent it being loaded, you are breaking things you wouldn't expect, and you likely aren't solving the game hang or receiving any actual benefit by blocking it.
HK-47 Feb 8, 2024 @ 1:22pm 
Originally posted by jmccaskey:
Sorry, but it's not a bug.

First of all, thanks for responding and apologies for venting my frustration.

Originally posted by jmccaskey:
You can go ahead and try to block it functioning as you have, but you can expect some sets of Steam functionality like Steam Input / gamepad support, in-home/remote streaming, and more to be fully broken.

It would be nice if you could provide a full list of functionality which will cease to work.

So far none of the things you mentioned are relevant to me for this particular game. As far as I know Mass Effect 3 isn't using Steamworks for mods. Perhaps the achievements? But I already have them at 100%. Cloud saves? I don't use them.

I see no personal benefit of that DLL being injected into the process and potentially causing instability because let's face it -- overlay hooking (which probably uses MinHook) as well as any other form of process hooking outside of Windows' sanctioned hook API is a hack job and depends heavily on the game (and / or its DRM) cooperating with you.

As such it may, through simple interactions such as call pass-through you are mentioning, expose hidden game bugs such as bugs in threading synchronization / locking by just changing the timing of a single call.

Originally posted by jmccaskey:
Without looking at the callstack (and possibly without having Mass Effect 3 symbols) I can't tell you what did cause the hang, but it's very likely not the overlay dll.

It is kind of irrelevant what was the exact cause of the hang, because Mass Effect 3 is a 32-bit game which is running quite close to the 32-bit process address space limit (try playing single player and then loading multi player then going back to single player and chances are you will already be missing some UI textures), and as such tends to be finicky even if you don't inject any hooks into it.

Origin (and probably EA App as well) respect the overlay setting in the sense that when it's off nothing is injected into the process.

Injecting a DLL wastes limited resource (32-bit process has 2 GB or 3 GB with LARGEADDRESSAWARE flag) by mapping said DLL and anything it needs into a finite process address space.

Originally posted by jmccaskey:
I'd suggest you don't try to prevent it being loaded, you are breaking things you wouldn't expect, and you likely aren't solving the game hang or receiving any actual benefit by blocking it.

I believe that I as a user should have the right to decide whether any of the functions offered by this DLL are relevant to me, and if I don't need any of them in a specific game then I expect said DLL to not get injected into the game process. It's as simple as that.

This is especially important for old games such as Mass Effect 3 which are no longer supported and which are somewhat unstable due to them running at the limit of technical limitations of the time when they were produced.

I really hope you guys will reconsider allowing us to fully disable injection instead of resorting to hacks.
Last edited by HK-47; Feb 8, 2024 @ 1:25pm
Kaldaien Feb 8, 2024 @ 9:31pm 
There are various environment variables you can screw with to change some aspects of the Steam overlay, but you're never going to prevent Steam from injecting it. Even the one to prevent the overlay from drawing still hooks various input APIs.

SteamAPI itself will actually load the overlay, and 99% of games on Steam these days use it.

I'd say generally you don't need to be too concerned by the DLL being injected, even though it does have non-defeatable hook code.

I have to prevent it from injecting from time to time in order to debug stuff correctly, but it mostly stays out of the way if you just export:

SteamNoOverlayUIDrawing=1
lsdninja Feb 9, 2024 @ 1:25am 
Originally posted by jmccaskey:
You can go ahead and try to block it functioning as you have, but you can expect some sets of Steam functionality like Steam Input / gamepad support, in-home/remote streaming, and more to be fully broken.

Not gonna lie, this sounds awesome…
Last edited by lsdninja; Feb 9, 2024 @ 1:25am
HK-47 Feb 9, 2024 @ 6:49am 
Originally posted by Kaldaien:
I'd say generally you don't need to be too concerned by the DLL being injected, even though it does have non-defeatable hook code.

In this particular case I am only concerned with the DLL and its dependencies taking up valuable 32-bit process virtual address space.
Kaldaien Feb 9, 2024 @ 10:18am 
Originally posted by lsdninja:
Originally posted by jmccaskey:
You can go ahead and try to block it functioning as you have, but you can expect some sets of Steam functionality like Steam Input / gamepad support, in-home/remote streaming, and more to be fully broken.

Not gonna lie, this sounds awesome…
Agreed :)

Steam Input doesn't work to begin with, I wish I didn't have to do all sorts of code gymnastics to get it to stop breaking HID, DirectInput, SetupAPI and XInput. Buying games on alternative stores is so much more attractive, because input simply works.
Kaldaien Feb 9, 2024 @ 10:29am 
Originally posted by HK-47:
Originally posted by Kaldaien:
I'd say generally you don't need to be too concerned by the DLL being injected, even though it does have non-defeatable hook code.

In this particular case I am only concerned with the DLL and its dependencies taking up valuable 32-bit process virtual address space.
Ah.

If you've got your own code in the game one way or another, you can hook LoadLibraryExW, check for "gameoverlayrenderer" and then SetLastError (ERROR_MOD_NOT_FOUND) and return nullptr.

You'll need to be in the process pretty early for this to work :-\ Most games have an import dependency on SteamAPI, and they'll immediately initialize it, bringing the overlay DLL into the process.

One way of accomplishing that would be with the Windows compatibility shim loader or Image Execution File options to load a DLL to prevent the overlay from loading globally.

Frankly though, Valve needs a literal kill switch for this stuff. Because it's SteamAPI loading the DLL into the process, this is never going to happen, as all games using SteamAPI would have to be patched with a new DLL that respects said killswitch.
Kaldaien Feb 9, 2024 @ 10:42am 
Ugh, wait. I just remembered that Image File Execution Options are disabled on systems with Secure Boot enabled.

The shim database approach is one that could work though.

https://www.boozallen.com/insights/cyber/tech/user-space-persistence-techniques-application-shims.html

Hilariously, almost all discussions on this sort of thing are written with a slant on malware. That's what Steam has turned into, so many unwanted things that the only way to circumvent crap is to do things that normally are only of interest to malware authors.

sigh
Kaldaien Feb 9, 2024 @ 10:51am 
On the topic of stuff Steam does that's undesirable in 32-bit software, its DRM wrapper pukes an error at startup if you patch an executable to be Large Address Aware. What a lovely store platform we've got here :rofl:
Tomina Feb 9, 2024 @ 12:14pm 
.
HK-47 Feb 9, 2024 @ 1:41pm 
@Kaldaien

You can just block it using NTFS file permissions as I shown above -- it works.

I don't have my code in the game, I just don't nead Steam code messing with that one game.

I wish we were back in the timeline where "disabled" meant the same as in dictionary, not some imaginative "running but kinda-sorta invisible".

I believe it is a valid thing to ask for -- "allow us to fully disable injection in legacy games".

I don't doubt that Steam devs are checking compatibility and writing robust code, the problem is that the games themselves are often buggy mess and anything hacky interacting with them is undesirable. Choice should be ours because we know our games the best.

Finally, injection is what other storefronts such as EA App and Origin also do so we end up having 2 hooks in the process and the chance that something will go wrong grows exponentially.
Last edited by HK-47; Feb 9, 2024 @ 1:46pm
Kaldaien Feb 10, 2024 @ 2:07pm 
Originally posted by HK-47:
@Kaldaien

You can just block it using NTFS file permissions as I shown above -- it works.
Oh, that's good. I guess I misread your previous statements. Yes, changing the permissions of the DLL are the only solution I personally have to keeping the overlay out of processes I'm trying to debug... I will go ballistic if a day ever comes that Valve decides to delete and re-download the DLL because it doesn't have the permissions the client wants.

I know they read this stuff, and then implement all these things just to irritate me.

As soon as I have a working bypass for Steam Input, they go and make it even worse... this is a nuclear arms race to keep Steam from screwing up the entire Windows input stack and I hate it. Steam Input just walks into the place like it owns the place, disables all input APIs, creates fake HID devices that you have to ignore because they don't actually work, and worst of all, when set to off, none of this stuff is actually off.

If only the games I wanted to play weren't Steam-exclusive, I'd be done with this store forever.
Last edited by Kaldaien; Feb 10, 2024 @ 2:12pm
< >
Showing 1-15 of 16 comments
Per page: 1530 50

All Discussions > Beta Feedback > Topic Details
Date Posted: Feb 1, 2024 @ 11:07am
Posts: 16