|
|
|
|
|
by jagrsw
1981 days ago
|
|
Another one then :) A few months ago I tried to run CSGO under Wayland. I recompiled libSDL.so b/c the one delivered with CSGO doesn't support Wayland, and ran with it LD_PRELOAD'ed. The game crashed upon start. After another debugging session with gdb/strace, I figured out that the CSGO binary is calling strstr()
with one of its arguments passed as a negative value from some other function, and it happens under Wayland only for some reason. Now, when preloading two libraries, and setting one environment flag I was able to play CSGO under Wayland. cat apps/strstr.c
#define _GNU_SOURCE
#include <string.h>
#include <dlfcn.h>
#include <stdint.h>
#include <inttypes.h>
char *strstr(const char *haystack, const char *needle) {
if ((uintptr_t)haystack > (uintptr_t)0xFFFFFFFF00000000) {
return NULL;
}
char* (*p)(const char *haystack, const char *needle) = dlsym(RTLD_NEXT, "strstr");
return p(haystack, needle);
}
$ SDL_VIDEODRIVER=wayland LD_PRELOAD=/home/<user>/apps/strstr.so:/home/<user>/Downloads/SDL-master/build/.libs/libSDL2-2.0.so.0.12.1 steam
But after playing with all those strace's/gdb's/LD_PRELOAD's my trust factor in CSGO (the score which says how likely I am to cheat in the near future), went down from Green (good player) to Red (Significantly Bad - will start cheating any moment:) within a week. And that's for 2012 account, with Prime enabled since 2016, and a couple of hundred matchmaking games played, and many more casual/FFA games. So YMMV :)I wrote to CSGOTeamFeedback@valvesoftware.com asking if they could verify if my account really deserves this rating, because every second CSGO match is again blatant cheaters now, but since nothing changed since a week (when I wrote it), this probably means that LD_PRELOAD'ing your steam is not a good idea :). |
|
Welcome to the "knows too much to be trustworthy" category of perceived-troublemaker.