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 


Creating a "slim" PDB [Solved]

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
paul44
Expert Cheater
Reputation: 2

Joined: 20 Jul 2017
Posts: 206

PostPosted: Wed Sep 10, 2025 11:53 am    Post subject: Creating a "slim" PDB [Solved] Reply with quote

see: [ https://ibb.co/album/1tKsTk ]
(the 1st pic shows game with loaded pdb - 2nd game does not have a pdb)

In UE games, it is possible to find the actual memLocation of a 'function' via its object. Iow one has the function_name and its corresponding mem_location.
I wonder if it is possible to create a "pdb", which can then be loaded up - kinda like a standard pdb - just for quick search/reference purposes.

One can register them as symbols, but that will make the symbollist 'un-overseeable' (and might even have performance impact ?).
My question: i have no idea how CE loads up/links the pdb info to these mem_addresses, but it must maintain some sort of table for sure.
Is there any way to do something similar with "just": mem_address + fn_name (without param_info andwhatnot)?

ps: i did some research on PDBs (one does not find much info - nor api - on writing these files though; plenty on reading). And: there is also a 'Portable Pdb' as well; is CE suppporting this format too?


Last edited by paul44 on Sat Sep 13, 2025 3:49 am; edited 2 times in total
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 470

Joined: 09 May 2003
Posts: 25778
Location: The netherlands

PostPosted: Wed Sep 10, 2025 1:10 pm    Post subject: Reply with quote

you can create a userdefined symbollist (createSymbolList() ) and give it a name.
It's easy to delete when done
if you register() it it'll show up in the memoryview window

you can add symbols using addModule/addSymbol (addsymbol without module is also allowed) and the speed isn't that badly affected. It's a double binary tree. One for names to address and one for address to name. Only memory usage will grow noticeable, but speed won't be an issue


If you have parameters you can add them using the extradata field, but if you don't do that that's fine as well. Only the symbolnames will be used when entering the address (unless you make the parameters part of the name)

Cheat Engine uses microsofts symbol handler api for parsing pdb's . If it supports portable pdb, CE should as well. Else it's up to you to parse the file and add it as a symbollist

_________________
Do not ask me about online cheats. I don't know any and wont help finding them.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
paul44
Expert Cheater
Reputation: 2

Joined: 20 Jul 2017
Posts: 206

PostPosted: Thu Sep 11, 2025 11:25 am    Post subject: got it... Reply with quote

Honestly, i was not expecting a solution for this one. This tool just keeps amazing me; kudos to the dev_team !

see here: [ https://ibb.co/QBvmHQL ]

I did some serious googling here, but could not find any info on how to fill that extradata part. I initially plan to pass on the objectID, but i am aware about some Function_Flags as well. As i understood back then, these seem to be UE specific, but "knowing" UE the object structure probably 'holds/links_to' information such as parameters and return_value as well.. ?!
=> so, can you give an example on how to feed that 'extradata' ?
(I do not want to add this info to the symbol as - i assume - this would also mean that one needs to add that part to the 'search' string as well ?!)

I consider this topic as Solved; will leave it open for a week or so in case i ran into some snag...


ps1: atm i have a problem reading/treating the file line by one (yep, already tried them 3 different "lines" approaches, but no cigar sofar. I'll open a topic if i'm not getting anywhere...
ps2: reference to 'Portable PDB': [ https://github.com/dotnet/vscode-csharp/blob/main/docs/debugger/Portable-PDBs.md ]
(cross-OS support)
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 470

Joined: 09 May 2003
Posts: 25778
Location: The netherlands

PostPosted: Thu Sep 11, 2025 4:12 pm    Post subject: Reply with quote

looks like the extradata is currently not usable (best not use it at all)

Next version has it fixed

if it worked, you'd do something like:
Code:

sl=createSymbolList()
--[[

 addSymbol(modulename, searchkey, address, symbolsize, skipAddressToSymbolLookup OPTIONAL, extradata OPTIONAL)
    Adds a symbol to the symbollist
    extradata is a table which can be used to fill in a return type and parameters for function calls. It has the following fields:
      returntype: string
      parameters: string
]]

sl.addSymbol('','something', 0x00400500,16,false,{returntype='humbug', parameters='spam a, spam b, spam c'})

sl.register()

_________________
Do not ask me about online cheats. I don't know any and wont help finding them.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
paul44
Expert Cheater
Reputation: 2

Joined: 20 Jul 2017
Posts: 206

PostPosted: Fri Sep 12, 2025 12:11 pm    Post subject: extradata... Reply with quote

yep, something i tried as well. Good to know it'll get fixed at some point...

There is just one "last' thing i need to ask: what do you need to fill in for [symbolsize] ? i assumed it was the ptr_address for that symbol, so gave it '8' (or 4). (in your example, you gave it 16 ?)
And btw: CE registered them symbols without probs (within the short period of testing ofc)

***************
fyi: got the routine working to read/treat them lines. 2000 lines gobbled up in about 1 sec or so; that looks promising...

ps: on a sidenote: did some additional reading and it looks that the Function Object should indeed 'link' to them params/returnval (~pretty much in the same way as with the structpropnames)
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 470

Joined: 09 May 2003
Posts: 25778
Location: The netherlands

PostPosted: Fri Sep 12, 2025 1:20 pm    Post subject: Reply with quote

symbolsize is just the range the symbol will take in the disassembler.
e.g if you set the size to 4096 then
symbolname to symbolname+fff will show up like that

_________________
Do not ask me about online cheats. I don't know any and wont help finding them.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
paul44
Expert Cheater
Reputation: 2

Joined: 20 Jul 2017
Posts: 206

PostPosted: Sat Sep 13, 2025 3:48 am    Post subject: for completeness sake... Reply with quote

Effect when using 'Symbolsize': [ https://ibb.co/album/rRDgqN ]
(incl memory_impact)

This is for about 10.000 entries (gear of war is an "old" UE game). I'm pretty sure - considering the size of PDBs that do come with certain games these days - that its mem_impact will be much larger for sure...

ps: i think it'll be more of a personal "taste", when chosing/changing this value
ps2: since this is defined per symbol, i assume that this "extension" will stop past your defined symbolsize for functions larger then this value...
(i gather that '4096' is not coincidental, but based on personal experience. iow a good value for one's money, sort of speak Cool)
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine 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