8dcc / tf2-cheat

Linux cheat for Team Fortress 2 made in C
GNU General Public License v3.0
23 stars 5 forks source link

64-bit update: Can't find GLEW when injecting. #32

Closed 8dcc closed 4 months ago

8dcc commented 4 months ago

Team Fortress 2 recently updated to 64-bits. Currently, I am updating the cheat in the x86_64 branch.

The cheat compiles fine, but when injecting, the following message appears:

bash ./inject.sh 
inject.sh: Our cheat library is located at /tmp/libglznmk.so
[New LWP 121590]
...
[New LWP 122032]
warning: Could not load shared library symbols for bin/linux64/launcher.so.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
0x0000735d618a20bf in poll () from target:/usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu/libc.so.6
$1 = (void *) 0x0
$2 = 0x52761e9db60 "libGLEW.so.2.2: cannot open shared object file: No such file or directory"
[Inferior 1 (process 121589) detached]

This is the output of ldd libenoch.so:

$ ldd libenoch.so
    linux-vdso.so.1 (0x00007ffe611f2000)
    libm.so.6 => /usr/lib/libm.so.6 (0x000079696b1c0000)
    libSDL2-2.0.so.0 => /usr/lib/libSDL2-2.0.so.0 (0x000079696aff1000)
    libGLEW.so.2.2 => /usr/lib/libGLEW.so.2.2 (0x000079696af12000)
    libc.so.6 => /usr/lib/libc.so.6 (0x000079696ad30000)
    /usr/lib64/ld-linux-x86-64.so.2 (0x000079696b379000)
    libEGL.so.1 => /usr/lib/libEGL.so.1 (0x000079696ad1e000)
    libGL.so.1 => /usr/lib/libGL.so.1 (0x000079696ac98000)
    libGLdispatch.so.0 => /usr/lib/libGLdispatch.so.0 (0x000079696abde000)
    libGLX.so.0 => /usr/lib/libGLX.so.0 (0x000079696abac000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0x000079696aa69000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0x000079696aa3e000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0x000079696aa39000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x000079696aa2f000)

As you can see, it was able to find libGLEW.so.2.2.

I have no idea why this is happening, since the library is installed:

$ ls /usr/lib/libGLEW*
lrwxrwxrwx 1 root root   16 Nov 15  2022 /usr/lib/libGLEW.so -> libGLEW.so.2.2.0
lrwxrwxrwx 1 root root   17 Jul  7  2020 /usr/lib/libGLEW.so.1.10 -> libGLEW.so.1.10.0
-rw-r--r-- 1 root root 470K Jul  7  2020 /usr/lib/libGLEW.so.1.10.0
lrwxrwxrwx 1 root root   16 Nov 15  2022 /usr/lib/libGLEW.so.2.2 -> libGLEW.so.2.2.0
-rw-r--r-- 1 root root 866K Nov 15  2022 /usr/lib/libGLEW.so.2.2.0
$ file /usr/lib/libGLEW*
/usr/lib/libGLEW.so:        symbolic link to libGLEW.so.2.2.0
/usr/lib/libGLEW.so.1.10:   symbolic link to libGLEW.so.1.10.0
/usr/lib/libGLEW.so.1.10.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=b30afb680d65eca04fa961cca390d56aff3f0daf, stripped
/usr/lib/libGLEW.so.2.2:    symbolic link to libGLEW.so.2.2.0
/usr/lib/libGLEW.so.2.2.0:  ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=fdeeb8ee52ed704e5f2dc112969fbb0825fa078e, stripped
$

See also #12, #27 and specially #30.

8dcc commented 4 months ago

I removed the calls to glewInit(), and the program is no longer compiled with -lGLEW, and although it now injects, I was not yet able to test if the menu still works because the cheat is still crashing because of outdated signatures or SDK.

See c421d7d4046751ef3669b74d7fe5504059302154.

8dcc commented 4 months ago

libGLEW.so.2.2 is no longer inside the Steam Runtime Environment.

You can check this by attaching GDB to the game and running:

(gdb) attach <PID>
(gdb) call (void)system("xterm")

And listing /usr/lib/pressure-vessel/overrides/lib/*. This path was taken from the LD_LIBRARY_PATH environment variable (cat /proc/$(pidof tf_linux64)/environ).

8dcc commented 4 months ago

Closing since I am archiving the repository.