| View previous topic :: View next topic |
| Author |
Message |
Paprikaskrumpli Cheater
Reputation: 0
Joined: 19 Dec 2020 Posts: 29
|
Posted: Thu Dec 24, 2020 9:21 am Post subject: Some of the game's values are too sneaky for pointerscans? |
|
|
Some things to know, I'll try to keep this short:
-I frequently use this technique, with success most of the time (I find results)
-When I get no results, I increase the structure size and level gradually (Usually is solves the "no result" problem)
-I always can find the correct value I'm looking for (before the pointer scan, I'm 100% sure It is the same value I've found before restarting the game)
Problem:
I've come across some values that I don't seem to find pointer paths to, even with high settings like: 8192 structure size, 9/10 level, and 3 limited offsets per node (rest are default)
Questions:
1) Is scanning with multiple pointermaps reliable, or
should I do it like this:
-pointer scan to a value
-get 100K-Couple Million of results
-restart game, find value, rescan memory, and gradually decrease the
number of results
or, both of them (I usually get less results with multiple pointer maps, and then start manually rescan memory, with the above technique)
2) What setting would you recommend for sneaky pointerpaths?
3) What setting would you recommend in general?
4) Is there a way to determine which module (dll/exe) a value is located
before a pointer scan (In order to find It more easily after a restart, or
limit the pointer scan to a given dll/exe?
5) What is "Lowest known path: " in the pointerscan window?
6) What is "Time spent writing" in the same window?
7) What is "Unique pointervalues in target" in the same window?
8) When I do "Pointer scan for this address", does CE do something like a "manual pointer scan"? What I mean by that is this:
-Find the value you are looking for
-Find out what accesses this address
-Subtract offset from address
-What points to a new address
-Repeat same process to these pointers
I'd like to learn as much as I can, so send me wall of texts please :D!
|
|
| Back to top |
|
 |
Dark Byte Site Admin
Reputation: 471
Joined: 09 May 2003 Posts: 25859 Location: The netherlands
|
Posted: Thu Dec 24, 2020 10:51 am Post subject: |
|
|
some values can not be found as they use variable unsexes instead of pointers (e.g maps, lists, arrays)
as for the questions:
1: yes
it's recommended to use the smallest map as base and the others as compare maps. It's doing a rescan for every result on each compare map, so only those that match all maps are left and get written to disk saving a lot of time writing to disk and reading it out later on rescans
2: offset 10000 level 10 max node of 3 or 2
3: offset 3128 level 7 max node 3 or 4
4: doesn't matter one bit. The base address is the last thing looked at when doing a pointerscan
5: Just some debug info that can give a slight idea of how long it may take. If all the fields contain the maximum offset you're at the end. Of course, many fields will be skipped as not every address os a pointer or what's currently looked for. But at least it's something tonshow it's 'doing something'
6: to show you how much time you have wasted by not using pointermaps
7: the number of unique pointers in the pointermap. The lower the shorter the scan will likely take (less branches to follow)
8: no for the debugging. that is up to you. (too many things can branch of there)
but you can input information like :ends with offsets and fill in what you found. it will speed up the scan as it will have less levels to go through
_________________
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 |
|
 |
Paprikaskrumpli Cheater
Reputation: 0
Joined: 19 Dec 2020 Posts: 29
|
Posted: Thu Dec 24, 2020 12:29 pm Post subject: |
|
|
| Dark Byte wrote: | some values can not be found as they use variable unsexes instead of pointers (e.g maps, lists, arrays)
as for the questions:
1: yes
it's recommended to use the smallest map as base and the others as compare maps. It's doing a rescan for every result on each compare map, so only those that match all maps are left and get written to disk saving a lot of time writing to disk and reading it out later on rescans
2: offset 10000 level 10 max node of 3 or 2
3: offset 3128 level 7 max node 3 or 4
4: doesn't matter one bit. The base address is the last thing looked at when doing a pointerscan
5: Just some debug info that can give a slight idea of how long it may take. If all the fields contain the maximum offset you're at the end. Of course, many fields will be skipped as not every address os a pointer or what's currently looked for. But at least it's something tonshow it's 'doing something'
6: to show you how much time you have wasted by not using pointermaps
7: the number of unique pointers in the pointermap. The lower the shorter the scan will likely take (less branches to follow)
8: no for the debugging. that is up to you. (too many things can branch of there)
but you can input information like :ends with offsets and fill in what you found. it will speed up the scan as it will have less levels to go through |
Thank you for your answer, very helpful!
Could you elaborate further on your first statement?
| Dark Byte wrote: | some values can not be found as they use variable unsexes instead of pointers (e.g maps, lists, arrays)
|
|
|
| Back to top |
|
 |
Dark Byte Site Admin
Reputation: 471
Joined: 09 May 2003 Posts: 25859 Location: The netherlands
|
Posted: Thu Dec 24, 2020 12:35 pm Post subject: |
|
|
still on my phone so there are typos
"variable indexes "
e.g an array of objects may get their order randomized due to harddiskspeed and threading.
the pointerscan does not handle indexes into arrays only pointers to objects
_________________
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 |
|
 |
Paprikaskrumpli Cheater
Reputation: 0
Joined: 19 Dec 2020 Posts: 29
|
Posted: Thu Dec 24, 2020 12:47 pm Post subject: |
|
|
| Dark Byte wrote: | still on my phone so there are typos
"variable indexes "
e.g an array of objects may get their order randomized due to harddiskspeed and threading.
the pointerscan does not handle indexes into arrays only pointers to objects |
Very interesting. Here is my problem: I have a value, on a given address. I can always find it after a restart. Tried pointerscanning it, with no results.
Then I said: Okay, I'll take a look how the game accesses it. Here's what I've found:
-What accesses this addres: find one offset, for example: 0x30 (And some reasonable functions like: when I change the value, a function gets called, uses this offset to reach the said value)
-Subtract offset from value's address
-Get a new memory location. Here comes the twist:
--Nothing points to this location (Exact value search, hex, looking for this address)
--Nothing accesses this location
--Noting points to the original value's address
How does the program access this value then? Have someone (you?) ever seen something like this? I can clarify further if needed.
|
|
| Back to top |
|
 |
Dark Byte Site Admin
Reputation: 471
Joined: 09 May 2003 Posts: 25859 Location: The netherlands
|
Posted: Thu Dec 24, 2020 12:49 pm Post subject: |
|
|
yes, it's likely an indexed variable
Look up in the code how that register got the value it is. Likely therer's a lea, or a add reg,xxx based on an index value that offsets the final address to the object
_________________
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 |
|
 |
Paprikaskrumpli Cheater
Reputation: 0
Joined: 19 Dec 2020 Posts: 29
|
Posted: Thu Dec 24, 2020 12:52 pm Post subject: |
|
|
| Dark Byte wrote: | yes, it's likely an indexed variable
Look up in the code how that register got the value it is. Likely therer's a lea, or a add reg,xxx based on an index value that offsets the final address to the object |
Thank you, I'll look into it! What should I do the pointersan to after? The first element of the array/verctor right?
|
|
| Back to top |
|
 |
|