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 


Assetto Corsa how to use the .pdb file provided?

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking
View previous topic :: View next topic  
Author Message
MundaneR
Newbie cheater
Reputation: 0

Joined: 05 Sep 2021
Posts: 10

PostPosted: Sun Sep 05, 2021 7:26 am    Post subject: Assetto Corsa how to use the .pdb file provided? Reply with quote

Hello, a total newbie here I have seen several forums beforehand just in case to check if my queries were answered and most of them point out to use the debug file which is there on the main root folder of the game executable itself named as "acs.pdb"

I am still clueless as to how to use the debug file properly since there are offsets like eCGHeight= 0xb and eAccG= 0xa listed inside the debug folders and I am not sure how to properly utilise these values into finding exactly what addresses I need to mess with in Cheat Engine.

If possible could someone help me out with how to properly use the debug file? I'm not sure how exactly it works and how I should use that debug file inside of Cheat Engine when let's say I want to change the suspension height of my car or something else down the line. Any help is appreciated thanks! if things are still unclear from this post I can furnish the details even more if required since it's my very first post in this forum.
Back to top
View user's profile Send private message
LeFiXER
Grandmaster Cheater Supreme
Reputation: 20

Joined: 02 Sep 2011
Posts: 1055
Location: 0x90

PostPosted: Sun Sep 05, 2021 9:07 am    Post subject: Reply with quote

You have to use a disassembler. Each disassembler will load the PDB files differently. I believe Cheat Engine automatically loads the PDB files providing that file is in the same directory as the executable binary.
Back to top
View user's profile Send private message
MundaneR
Newbie cheater
Reputation: 0

Joined: 05 Sep 2021
Posts: 10

PostPosted: Sun Sep 05, 2021 9:20 am    Post subject: Reply with quote

LeFiXER wrote:
You have to use a disassembler. Each disassembler will load the PDB files differently. I believe Cheat Engine automatically loads the PDB files providing that file is in the same directory as the executable binary.


A disassembler? sorry because it seems like a foreign concept to me but I have tried using x64dbg and IDA and finally decided to use x64dbg instead but got stuck up trying to figure out what was common between the .pdb file and the game executable I attached as well but still I am not sure about how to navigate through finding the base address? Since if I am not mistaken I have read up that

Base + Offset = Address
Address - Base = Offset

I am not yet sure as to how to properly get one of those values and to maybe double check if they are the right one?

a side note that I have converted a .pdb file to .txt in order for me to read it but wasn't aware that they change every time and instead was assuming at first so I guess the .txt document I have is useless and I got to entirely rely on a disassembler as the .pdb file keeps changing?
Back to top
View user's profile Send private message
LeFiXER
Grandmaster Cheater Supreme
Reputation: 20

Joined: 02 Sep 2011
Posts: 1055
Location: 0x90

PostPosted: Sun Sep 05, 2021 10:18 am    Post subject: Reply with quote

Use Dissect code (Ctrl + J) feature in the Memory Viewer window. CE should load the PDB file providing it is in the same directory as the game's executable.

Then you can just use CE like normal to find the base address and view the memory region around that address. The Memory Viewer window will display things allocated by the PDB file.
Back to top
View user's profile Send private message
MundaneR
Newbie cheater
Reputation: 0

Joined: 05 Sep 2021
Posts: 10

PostPosted: Sun Sep 05, 2021 11:01 am    Post subject: Reply with quote

LeFiXER wrote:
Use Dissect code (Ctrl + J) feature in the Memory Viewer window. CE should load the PDB file providing it is in the same directory as the game's executable.

Then you can just use CE like normal to find the base address and view the memory region around that address. The Memory Viewer window will display things allocated by the PDB file.


Oh, it looks like CE itself picked up the .pdb file when it searched for acs.exe in the process list.

Just a slight confusion I thought that you could use the .pdb file to find addresses of whatever I want to change in the car but I guess I am wrong here? Because of how the game keeps rebasing every time I restart so I guess I have to instead play around with the values to find what I want to change and then find the pointers for it?

Lastly, I have found the address which is responsible for changing the RPM band by changing its value and watching the bytes change as well for the car but I am not sure whether I have to now search for what is accessing that address in order to find my static pointer just so that even if the game restarts I can still use those pointers...
Back to top
View user's profile Send private message
LeFiXER
Grandmaster Cheater Supreme
Reputation: 20

Joined: 02 Sep 2011
Posts: 1055
Location: 0x90

PostPosted: Sun Sep 05, 2021 2:26 pm    Post subject: Reply with quote

PDB name symbols to things more meaningful and provide more context as to the code itself rather than being just numerical values. These PDB files don't provide a high-level representation of the underlying code.
Back to top
View user's profile Send private message
atom0s
Moderator
Reputation: 198

Joined: 25 Jan 2006
Posts: 8517
Location: 127.0.0.1

PostPosted: Sun Sep 05, 2021 4:35 pm    Post subject: Reply with quote

LeFiXER wrote:
PDB name symbols to things more meaningful and provide more context as to the code itself rather than being just numerical values. These PDB files don't provide a high-level representation of the underlying code.


It depends on the compiler settings. PDB's can contain very in depth and useful information. (ie. full type info, struct layouts, direct symbol info related to globals, objects, etc. and so on.)

For best results when a PDB is available, a disassembler / decompiler will show things in a lot more detail. (ie. IDA, Ghidra, etc.)

CE will pickup and use the pdb as well if its available, but CE's interface isn't as in depth of something like IDA/Ghidra when it comes to the disassembling and other useful data that would be part of the pdb.

_________________
- Retired.
Back to top
View user's profile Send private message Visit poster's website
LeFiXER
Grandmaster Cheater Supreme
Reputation: 20

Joined: 02 Sep 2011
Posts: 1055
Location: 0x90

PostPosted: Sun Sep 05, 2021 5:30 pm    Post subject: Reply with quote

atom0s wrote:
LeFiXER wrote:
PDB name symbols to things more meaningful and provide more context as to the code itself rather than being just numerical values. These PDB files don't provide a high-level representation of the underlying code.


It depends on the compiler settings. PDB's can contain very in depth and useful information. (ie. full type info, struct layouts, direct symbol info related to globals, objects, etc. and so on.)

For best results when a PDB is available, a disassembler / decompiler will show things in a lot more detail. (ie. IDA, Ghidra, etc.)

CE will pickup and use the pdb as well if its available, but CE's interface isn't as in depth of something like IDA/Ghidra when it comes to the disassembling and other useful data that would be part of the pdb.


Yeah, that's pretty much what I meant in the sense it provides useful information, but not every time and that it won't produce a result that's akin to high-level code. Nevertheless, your answer is very much a welcome one coming from sage of this field it means a lot that it confirms what I thought.
Back to top
View user's profile Send private message
MundaneR
Newbie cheater
Reputation: 0

Joined: 05 Sep 2021
Posts: 10

PostPosted: Mon Sep 06, 2021 4:00 am    Post subject: Reply with quote

Hello, so good news I have found the RSI address responsible for accessing my RPM band and decided to check in Memory Viewer and found out that some of the bytes change when I apply brakes, throttle, turn left and right and so on and decided to open acs.exe on Ghidra and managed to rebase it but I am currently stuck with what I should do now as of now I have highlighted the line which should be responsible for accessing the RPM band problem is I have two addresses which are related with the RSI like 7FF767AF18B7 and 7FF767AF19D9 but I decided to take the first value rebased Ghidra and here I am stuck not knowing what to do next or how to proceed now... Any help will be really appreciated thanks again for helping me out so far.


wajsdd.png
 Description:
 Filesize:  162.88 KB
 Viewed:  4523 Time(s)

wajsdd.png


Back to top
View user's profile Send private message
MundaneR
Newbie cheater
Reputation: 0

Joined: 05 Sep 2021
Posts: 10

PostPosted: Sat Sep 11, 2021 2:01 am    Post subject: Reply with quote

Sorry for the long away notice, been almost a week to figure out how to use Ghidra along with Cheat Engine but I got a question beforehand.

Firstly is it possible for CE to find a way to bypass checksum made on a particular file? There is a "data" folder which contains all the .ini files when I unpack and I can change values from there but if I want to hop online in an empty local server which I made I get an error saying that I am checksummed so I need to repack the data folder into data.acd for me to actually hop online but if I do change a value in an .ini file it will still show that I am checksummed from this I could sort of deduce that the .acd file should be the exact file size otherwise you can't get online so is there anyway or CE to bypass this?
Back to top
View user's profile Send private message
atom0s
Moderator
Reputation: 198

Joined: 25 Jan 2006
Posts: 8517
Location: 127.0.0.1

PostPosted: Sat Sep 11, 2021 7:17 pm    Post subject: Reply with quote

You would need to find and alter the function that is being used to validate the files. CE, along with many other tools, can be used to do that. Ghidra may be easier to start with by looking for the exact error message and where its being used then disassembling and reviewing how the function works. Then you can make a table with CE to auto-attach and patch it as needed. (Or just modify the exe/dll directly.)
_________________
- Retired.
Back to top
View user's profile Send private message Visit poster's website
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