13 ms·
AMD Counter-Strikes itself, pulls driver after anti-lag feature causes CS2 bans
- no_time 3y agoAMD forgot to detour the VAC integrity checks too.
- fxtentacle 3y agoMost likely, they just forgot to wait for Valve to ship the update where they whitelist those specific modifications.
- sillysaurusx 3y agoDo valve whitelist those? I think the geforce changes operate by hooking into the actual rendering functions, not individual games —- or can they?
- armada651 3y agoGPU vendors don't have to hook rendering functions since they're the ones providing the implementation of those rendering functions. If Nvidia requires extra hooks into the game they usually ask the developer to call certain functions in NVAPI, which is their vendor-specific driver interface.
- no_time 3y agoThere must be some kind of whitelist system. Discord for example doesn't have many options to draw it's ingame overlay. They either create a topmost transparent window (does not work in exclusive fullscreen) or hook glEnd() of the targer or however it's called these days.
- armada651 3y agoCounter-Strike allows detouring of system calls by code signed DLLs if it's not running in trusted mode. Once it's running in trusted mode all hooking is blocked, so even the Discord overlay would not be allowed. Source: https://help.steampowered.com/en/faqs/view/09A0-4879-4353-EF95 https://help.steampowered.com/en/faqs/view/09A0-4879-4353-EF...
- deleted 3y ago[deleted]
- armada651 3y ago> Is there a whitelist of software that can be safely injected into CS:GO? > No. Unfortunately, even benign applications are often a vector for cheats that hijack them in order to cheat in CS:GO. So in Trusted mode, all foreign software is blocked. Source: https://help.steampowered.com/en/faqs/view/09A0-4879-4353-EF95#whitelist https://help.steampowered.com/en/faqs/view/09A0-4879-4353-EF...
- AshamedCaptain 3y agoAlmost 100% sure they keep a whitelist with all common GPU drivers. Note that by definition GPU drivers _require_ the ability to inject DLLs into the process, read/write to the process memory, and even create new threads on it... That's the reason Chrome and derivatives put GPU stuff on a separate process. But you try to do this type of sandboxing on a game and it will utterly destroy performance.
- dogma1138 3y agoCan you provide some docs around it? It goes quite against everything public, when NV adds new features that are not part of D3D or other APIs they release binaries for developers to use to call NVAPI directly Ive never seen their driver injects anything into a running process.
- AshamedCaptain 3y agoD3D is not IPC. It is mostly implemented in the process' address space. When you call a D3D function you are not magically dumping all your primitives into the kernel-side driver (which would be slow), you are calling into nvd3dum.dll which _may_ eventually call into the kernel. All of this happens in the same process and therefore the GPU driver can do whatever the hell it wants to it.
- mardifoufs 3y agoYes but this derouted the engine.dll (or equivalent) code in userspace (not sure if that's the right term here). I agree that they probably whitelist or even just don't check the graphics or rendering related functions, since tons of mods allow you to do that without any widespread ban wave. But when it's hooking to the core engine code, I think that's a different story. Correct me if I'm wrong though.
- rvnx 3y agoThe real issue here is that it was a detectable optimization, Nvidia may play similar tricks except it’s not an issue if the code is embedded deeper into the hardware stack. For example, Nvidia cards are great for cheaters because you can disable flashbangs and smoke grenades using the stock driver. If we push it that way, any improvement of FPS due to hardware could even be considered unfair, and to ensure fairness, everybody could theoretically be limited to 30 FPS and xxHz refresh rates.
- dogma1138 3y agoReflex requires the game developers to use the Reflex interface via NVAPI, the AMD global anti lag feature was hijacking calls at runtime and modifying the memory of running processes. I don’t know how this design passed basic red teaming during the design phase not to mention QA.
- dbttdft 3y agoWhat actually happened is that the game code was modified in memory which VAC disallows because that's how many cheats are implemented. I'm not even sure what you're trying to say. Yes you can disable some effects in games through changing driver options and you can make your monitor render a red dot and add macros to your keyboard, those all are a distinct problem from the subject here. A framerate limitation for "fairness" wouldn't make sense because you'd basically be arguing that it's unfair that someone saw one single extra frame that some player zipped across the screen and they were able to track them whereas they wouldn't without that extra frame. But a game being networked naturally presents the same issue and it can't be solved (in an engine like source or unreal): player locations are sent to your client at a fixed sample rate. Whether you see a player zip across the screen will just be determined by a bunch of phases of cyclic phenomena: for instance your client renders every 33.33ms (for 30FPS) and the server says he's at position A, then the server says he's at position B which is in your view, but your game isn't rendering yet because it just finished rendering the previous frame. Then you get a packet saying he's at position C which is also off your screen and now finally the rendering happens, rendering another frame with the player off your screen. So you never saw him cross your screen. But another player sitting right behind you looking in the exact same direction will be on a different phase of his render loop: he may render right after receiving position B and so he will see the player zip across. This example ignores interpolation and stuff but it will still apply even then.
- lostmsu 3y agoDo you happen to know how to detour Steam games on startup? Just launched executable (with detours) gets Steam to restart itself (so now without).
- no_time 3y ago>Steam to restart itself (so now without). With all due respect, I'm struggling to parse this part of your comment. With that said, I'm pretty sure your target is calling this API method: https://partner.steamgames.com/doc/api/steam_api#SteamAPI_RestartAppIfNecessary https://partner.steamgames.com/doc/api/steam_api#SteamAPI_Re... If you don't care about being authenticated with a "legit" session for online play, just strip SteamStub and apply a Steam emu with the necessary config. Those will obviously not care about wherever they are being launched from. I recommend the CODEX one if your target is not too recent.
- sillysaurusx 3y agoSome AMD employee really wanted those last few FPS out of their CS2 rig. I wonder how you’d even go about optimizing a game this way. They must have some profiling that shows where the engine hotspots are, then somehow tie those to actual engine dll entry points. Kind of a tricky/impressive bit of reverse engineering.
- fxtentacle 3y agoMost likely, this is similar to NVIDIA reflex. In that case, they simply wait in the engine loop directly before mouse and keyboard entry are handled. That way, the GPU can process this new data immediately (as opposed to first waiting for vsync) and thereby overall latency is reduced.
- noduerme 3y agoWhy would this be considered an illegal cheat? In a networked game, shouldn't the only determinative factor be whose input arrives at the server first?
- tremon 3y agoMy guess: this changes the timing profile of the overall game/engine. If the engine monitors itself for erratic/unexpected delays, it may conclude that it's running under a debugger if certain procedures take far longer (or shorter) than they should.
- g232089 3y agoI remember back in the day ATI Tray Tools also injected itself into processes and caused bans. I don't know what's with AMD and their complete incompetence in matters of software.
- qayxc 3y agoWhat does that have to do with incompetence, though? Incompetence would imply that the feature either didn't work or broke things, which it didn't. It triggered a very specific anti-cheat mechanisms of one specific and relatively new game. The game still worked as intended, though.
- lightedman 3y ago"What does that have to do with incompetence, though?" They've made this same mistake before, didn't learn their lesson, and repeated the same mistake. That's pretty incompetent. Like Cisco-level incompetent.
- cdogl 3y agoTwo similar bugs over multiple decades is an utterly routine occurrence in software development. Graphics cards and drivers are a marvel of engineering and maths. They work miracles, and are the product of thousands of specialists along the production chain. It’s hardly a damning indictment that they didn’t place compatibility with the anti cheat engines of competitive multiplayer games at the top of their priority list.
- ImPostingOnHN 3y agoUnless either tool was actually a cheat, the mistake in both cases was made by the anti-cheat software: a false positive. Users should be free to play without cheating and not worry that the a anti-cheat will falsely think they are. "but wait!" one may protest, "the tool is similar to a cheat if they detect using [technique X]!" Well, I'm not forcing them to use [technique X], and they aren't entitled to exclusively use it, if it returns false positives. Sounds like they need to think of better techniques. And if they can't, and it turns out they don't know how to solve the problem without hurting innocent people, they aren't entitled to exist, either.
- xinayder 3y agoAMD should work with Valve to release these improvements to everyone. They pretty much patched the engine to lower latency, I believe everyone could benefit from it if Valve saw what AMD did and implemented their "fixes".
- yclept 3y agoTangentially related: Back in the day, the AMD Cool'n'Quiet feature had a funny effect in CS:Source where your player would move much faster than normal. This resulted in bans because of the obvious advantage, which was mistaken for a speed hack.
- beeboobaa 3y agoNever understood how Valve's VAC bans are even legal. You pay for a game, Valve decides they don't like your computer and they take away your ability to play that and other games that you paid for without refunding you. Worse, they slander you on your Steam profile page so other gamers know what Valve thinks of you. They claim to never make mistakes, but that's obviously bullshit since they make mistakes time and time again.
- super256 3y agoYou don’t buy the game but a license to play it. You can still play CS after a ban, just not online on their servers or any community servers which block vac banned players. (They killed all community servers two weeks ago btw)
- beeboobaa 3y ago"You can play it except for the game modes people actually care about" Do you also think it's okay if a car that you bought prevents you from driving it, but oh don't worry, it's okay because you're still allowed to open the doors?
- somehnguy 3y agoLook, I get where you’re coming from. But ask people who actually play competitive online games and I can all but guarantee the general consensus is that anti-cheat is celebrated, not hated. Most people’s complaint with VAC would likely be that it is too lenient or too slow to ban. Some online games don’t have anti-cheat, and they become nothing but a cheating cesspool. Which consequently drives away actual players, and then you have a dead game except for essentially bots.
- beeboobaa 3y agoThat's the same argument as "but think of the children". Are you also fine with CSAM scanning tools being installed everywhere? It's okay to have a bunch of false positives that potentially ruin people just in case you can also catch a bad apple?
- mardifoufs 3y agoTo clarify, this does not seem to only affect cs2. Antilag+ has been slowly enabled on a game per game basis, and they recently started adding multiplayer games. They seem to also be affected. https://www.reddit.com/r/Amd/comments/177bdfg/amds_antilag_also_triggering_anticheat_in_other https://www.reddit.com/r/Amd/comments/177bdfg/amds_antilag_a... You can also see this pretty telling forum thread: https://answers.ea.com/t5/Technical-Issues/Account-Falsely-Banned/m-p/13064379/highlight/true/page/5 https://answers.ea.com/t5/Technical-Issues/Account-Falsely-B... AMD also openly said that they are patching game engine code, which is just bizarre. Not sure what the thought process was. Even if we assume they were aiming to be whitelisted (I'm not sure hooking into game engine code is even common, apparently it isn't), they have still pushed the updates before the whitelisting happened. What was the plan here? There are open source projects attempting a similar approach to antilag+ ("patching" the DLLs at runtime) but they all seem to warn you about possible anticheat detection on multiplayer games. Again, this was patching the actual engine DLL, not the rendering or graphics related DLLs that drivers sometimes have to patch for specific games.
- bugfix 3y agoLooks like some people were VAC banned: https://twitter.com/CounterStrike/status/1712875606776729832 https://twitter.com/CounterStrike/status/1712875606776729832
- codetrotter 3y ago> AMD also openly said that they are patching game engine code, which is just bizarre. Not sure what the thought process was Hasn’t it been true for ages that GPU drivers contain fixes for a lot of GPU instructions from popular games that would otherwise be broken. In that case, if they are used to fixing games already, it might not seem a big step from their side when they decided to also patch game code that runs on the CPU. It was unfortunate that they did not realise this would lead to triggering anti-cheat systems in games though. But there is history of others altering program code too. For example Microsoft Windows included code specific to various pieces of software that would otherwise be broken. I wonder if that ever lead to trigger anti-cheat systems in any games.
- Unfrozen0688 3y agoI last had a R9 290X AMD card. Never again holy fuck
- filoleg 3y agoSame, but R9 380X back in college. Bang per buck it seemed better than NVidia. But despite my distaste for NVidia back then, after that experience, I resolved to never get an AMD GPU again unless things drastically change. Drivers would constantly break something, some games would run poorly and I would have to fiddle with driver versions to address this (often involving annoying version rollbacks), it would randomly start overheating for no reason, sometimes it would just crash the system, etc. Upgraded to 480 later, and the exact same story repeated. You know what happened once I got an NVidia GPU years later (1080Ti)? I never had to think about the GPU ever again. I install a driver update occasionally, it “just werks”, and I would go on my merry way. Upgraded to a 3080 about half a year after it got released, and had the same story - it just works, and I never have to think or worry about it ever. I would love to support AMD GPUs, but I cannot, in good conscience, buy their GPU again and waste time troubleshooting it and stress over every driver update. On the flip side, AMD CPUs are amazing. Been with them since the original Ryzen release, upgraded once (from 1700 to 3900x), no issues whatsoever and am very happy with those. My next build will be an AMD Ryzen CPU as well, but it will have an NVidia GPU.
- hypercube33 3y agoFunny since I agree about mobile radeons being like this where every update is a risky thing however I moved from Nvidia only (after my one ATi 9800 Pro) to AMD due to the drivers stuttering, breaking and finally making my 8800Gts 320 unusable in games because it wasnt the magic 640mb edition. I've since had 5770, 6770 (same card but in fire), 290X, RX580X, and now 6750 without any issues. iGPU stuff however has been awful but then again so was my Intel/Nvidia laptop having problems with iGPU fighting the dGPU.
- filoleg 3y agoIn my case, all of the configs I described were desktop builds, as I am not willing to touch a windows laptop with a 10 foot pole again, and in general gaming is the last thing on my mind when considering a laptop.