hey if any Fedi beings know about Windows #ReverseEngineering I’d love some advice or help!
I’m trying to figure out how the anti-save-scumming system for a game called Teleglitch works. here’s what I’ve figured out so far:
C:\Program Files (x86)\Steam\userdata\«some numbers»\«more numbers»\remote
C:\Program Files (x86)\Steam\steamapps\common\TeleglitchDME
) (same thing - I made it into a git repo)anyway I would love some advice on what to try next. I’ve tried to summarize just the most important parts of what I know about Teleglitch’s behavior, but I can explain more if anyone is interested!
@kasdeya it's possible all save read/writes are going through steam using the ISteamRemoteStorage interface.
You may want to log steamworks API calls, this can be done by opening the console at steam://open/console
then telling it to log IPC from there. iirc the command is something like log_ipc verbose
but idk, see the help page and try some stuff.
@kasdeya if you want to see what data is actually sent to valve the main way of doing this is NetHook2 and NetHookAnalyzer2, both part of SteamKit. That probably won't actually be necessary for you though.
@kasdeya The steamworks SDK is a bit annoying, since it's all virtual C++ functions. There's two ways of getting an ISteamRemoteStorage
instance: One involves the string STEAMREMOTESTORAGE_INTERFACE_VERSION
, and the other calls a function on an ISteamClient
instance, which will involve the string SteamClient0
If you search for those version strings you can figure out which version of the SDK it uses and therefore the struct layout. All the public versions of the SDK headers are in the Proton repo
@artemist omg thank you! this helped so much. this was actually the last piece of the puzzle that I needed. I was able to figure out exactly what’s going on, and I added the details to the savefile section of the PCGW article for Teleglitch if anyone is interested