Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Steam Client Hacking (not for free games)

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking
View previous topic :: View next topic  
Author Message
yo1dog
How do I cheat?
Reputation: 0

Joined: 17 Sep 2017
Posts: 1
Location: Austin, Texas

PostPosted: Mon Sep 18, 2017 6:20 pm    Post subject: Steam Client Hacking (not for free games) Reply with quote

TL;DR

Let's say a program shows the names of a list of people. First and last names are stored individually. The list has a variable length and is loaded into memory dynamically from a local file. I want to change the first names of John Doe and John Smith to "Johnny" and "Joey" respectively.

How can I find the addresses of Doe's and Smith's first names?

I am not sure what specific information would be useful to post. Let me know and I'll post it.


Objective

I want to rename/reorder some of the games on my Steam game list. Example:
Code:

 Before                                     |  After
--------------------------------------------|--------------------------------
 Grand Theft Auto III                       |  Grand Theft Auto III
 Grand Theft Auto IV                        |  Grand Theft Auto: Vice City
 Grand Theft Auto V                         |  Grand Theft Auto: San Andreas
 Grand Theft Auto: San Andreas              |  Grand Theft Auto IV
 Grand Theft Auto: Vice City                |  Grand Theft Auto V
 Resident Evil / biohazard HD REMASTER      |  Resident Evil HD Remaster
 Resident Evil 0 / biohazard 0 HD REMASTER  |  Resident Evil 0 HD Remaster
 resident evil 4 / biohazard 4              |  Resident Evil 4
 Resident Evil 6 / Biohazard 6              |  Resident Evil 6



Attempted Solutions

(See bottom of post for Non-Cheat Engine attempted solutions).

The first thing I did was search for and replace the display name (ex: "resident evil 4 / biohazard 4" string with "Resident Evil 4"). That worked for the display name, but sorting is tricky. I found that games have both a display name and a "sort as" string. For example, "X-COM: UFO Defense" and "X-COM: Terror from the Deep" define "X-COM 1: UFO Defense" and "X-COM 2: Terror from the Deep" as the "sort as" string so they appear in chronological order. If no "sort as" string is defined then the game's display name is used. Also, Steam will remove "The " and "A " from the start of the "sort as" strings (ex: "The Walking Dead" -> "Walking Dead").

Searching and replacing still works if display name and "sort as" string should have same value. It also works if the display name and "sort as" string have different initial values as you can search for and replace them individually. But if that's not the case then you can't blindly search for and replace strings. For example, lets say I wanted to rename "Fubar Game®: The 3rd One™" to "Fubar Game: The 3rd One" and sort it as "Fubar Game 3". Let's assume that the game does not define a "sort as" string, so the display name and the "sort as" are exactly the same. I need to be able to differentiate between the address that holds the display name and the address that holds the "sort as" string so I can replace them with different values.

I am able to do so by searching for the string(s), changing the values of each result address, and observing changes to Steam's UI. If I update an address and the game's name in the list changes, that's the display name address; If the game's sort order changes, that's the "sort as" address.

After I found the addresses, I tried to follow the pointers to a static memory address with little success. Most often I could not reach static memory as I would get stuck 6-7 levels up (no pointer exists with suggested address). One time I did reach a pointer in static memory but after I restarted Steam (on the same PC), the pointer at the static address pointed to something completely different. I assume these problems are due to the data being dynamically loaded from the disk and/or network.

So, How can I reliably find the addresses of the display name and "sort as" string for games?


Non-Cheat Engine Attempted Solutions

Before I even found CheatEngine I attempted to modify the data on the way into the Steam client. First, I followed this suggestion from 2015 that you can modify $STEAM_INSTALL_DIR/appcache/appinfo.vdf where it seems that data for all the games in my library are stored. However, this does not work anymore. If the file is changed it is deleted and recreated when Steam starts and the additional loading messages "Updating Steam Information..." and "Updating User Configuration..." are shown. I also see this in $STEAM_INSTALL_DIR/logs/appinfo_log.txt:
Code:

Corrupt data in binary buffer for app 231160, CLN 3371323,
ProductInfoChanges: change number 3418790->3418809, apps: 1/15, packages: 0/3
UpdatesJob: requesting 512 apps, 0 packages (meta data, 1024 prev attempts)
UpdatesJob: requested 111 access tokens, 107 received, 4 denied
UpdatesJob: updated SHAs with 107 new access tokens
UpdatesJob: downloaded 35 apps via HTTP, 578 KB (160 KB compressed)
UpdatesJob: requesting 474 apps, 0 packages (full data, 1024 prev attempts)
UpdatesJob: finished OK, nAppsUpdated 509 (1698 KB), nPackagesUpdated 0 (0 KB)
Starting async write C:\Program Files (x86)\Steam/appcache/appinfo.vdf (3035080 bytes)


Using Fiddler, I can see those 35 HTTP requests to URLs like: clientconfig.akamai.steamstatic com/appinfo/240/sha/3b6bd289807a7e320301662f8df55732f79ad881.txt.gz each of which return data for a single game in a structure that matches the ones in appinfo.vdf. I completely deleted appinfo.vdf and started Steam and I saw similar log messages with "downloaded 66 apps via HTTP". Again I saw those 66 HTTP requests in Fiddler. However, I have 481 games in my library. I am not sure where the data for the other 415 games is coming from. For Example, I could not find any HTTP traffic that contained the string "Grand Theft Auto".

Anyway, I gave up that solution and started looking for ways to modify the program itself which led me to Cheat Engine.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites