vanchann: There are many dll injection techniques.
Except from the simple case of forcing to load just a renamed dll, there are more complex ways. For example if we get access to a process memory space, we may inject anything. Another way could be the Windows registry and there are more.
But those technique wouldn't make sense here, most of the other technique are intrusive, can causes instability, while simply replacing a DLL is easy, fast and relatively safe, easy to roll back, and doesn't risk being detected by overzealous anti-virus as being
suspicious.
But like I said earlier the base of this method of injection is to use the
same name than the DLL you are trying to "inject" yourself into; if you want to incertept Direct X calls you call your DLL d3d.dll and put it in the game folder, if you want to intercept Steam calls you name your DLL steam_api.dll and put in in the game folder.
But here, apparently, the game load galaxywrp.dll directly and not steam_api.dll
vanchann: GOG also patches executables (injecting binary offsets).
Let's get back to reality for a second here, we are talking about a recent game where the company who created it is still around, we are not talking about a old games where the source code is lost in the void for many years.
There is no need for them to use any crack, to do any weird "fiddling" with the executable; they just have to ask Bethesda to provide them with an exe that will works outside of Steam.
vanchann: It's linked to
Thiev's post, but it could be missed. The API looks identical.
Most likely that galaxywrp.dll is an in-place replacement for steam_api.dll, so games that only implement very basic achievements and don't need any other features of Galaxy can use it.
vanchann: Since GOG has built the library, it has been GOG's responsibility to maintain compatibility.
Why would it be their responsibility to maintain compatibility with OS they said the no longer support ?