|
Cheat Engine The Official Site of Cheat Engine
|
View previous topic :: View next topic |
Author |
Message |
LoganDark How do I cheat? Reputation: 0
Joined: 12 Jan 2021 Posts: 4
|
Posted: Wed Jan 13, 2021 11:30 am Post subject: Finding unknown bigints (/bigdecimals) |
|
|
Basically the game is one of those stereotypical idle games where your money output increases exponentially over time, but you need to wait for days and days to get it up. Of course they provide convenient "time warps" to skip days ahead, but they're paid. Because there is a paid alternative, they think they get a free pass to make the non-paid part of the game absolutely torturous. (Plus it's a mobile port.)
I'm trying to change the money value, but I don't know what type it is! It's not an 8-byte int because it can go into the novemtrigintillions (and much farther beyond), and it's not a float or a double because it doesn't lose precision as it gets larger. I've tried speedhack, but it doesn't work because it doesn't know what realGetTimeOfDay means.
How should I go about identifying this?
|
|
Back to top |
|
|
ParkourPenguin I post too much Reputation: 140
Joined: 06 Jul 2014 Posts: 4297
|
Posted: Wed Jan 13, 2021 12:29 pm Post subject: |
|
|
LoganDark wrote: | it's not a float or a double because it doesn't lose precision as it gets larger | Floats/doubles don't lose precision as they get larger. e.g. doubles always have 53 base-2 (15.95 base-10) digits of precision. Denormal numbers are an exception.
Anyway... most web idle games I've seen store big numbers as two doubles: a mantissa and an exponent. e.g. mantissa 5.99329, exponent 10.0 = 59932900000. Try letting the number go up a few orders of magnitude (at least 3) and scan for increased value to find the exponent.
_________________
I don't know where I'm going, but I'll figure it out when I get there. |
|
Back to top |
|
|
LoganDark How do I cheat? Reputation: 0
Joined: 12 Jan 2021 Posts: 4
|
Posted: Wed Jan 13, 2021 12:54 pm Post subject: |
|
|
ParkourPenguin wrote: | LoganDark wrote: | it's not a float or a double because it doesn't lose precision as it gets larger | Floats/doubles don't lose precision as they get larger. e.g. doubles always have 53 base-2 (15.95 base-10) digits of precision. Denormal numbers are an exception. |
See these two sections on single-precision floating-point to understand what I mean by "lose precision":
(Actually, scratch that, I'm not allowed to post URLs yet. Thanks DB. Look up the Wikipedia article "Single-precision floating-point format" and check out the two sections titled "Precision limitations on decimal values in [1, 16777216]" and "Precision limitations on integer values".)
Doubles have the same issues, but they have more precision so the cutoff points are bigger.
ParkourPenguin wrote: | Anyway... most web idle games I've seen store big numbers as two doubles: a mantissa and an exponent. e.g. mantissa 5.99329, exponent 10.0 = 59932900000. Try letting the number go up a few orders of magnitude (at least 3) and scan for increased value to find the exponent. |
So it's like a magnified version of IEEE 754 - you use two doubles to make a bigger double. Hmm.
I'll check it out and report back.
Edit: Alright, I've checked it out. There are, in fact, doubles that are used to represent money. I seem to have found a crap-ton of them. And not a single one controls the money value.
Yes, they all instantly update when I update my money. But setting them all to active does not prevent my money from changing.
Curiously, it doesn't even look like they are part of big doubles, because they contain the full money value. Curious...
|
|
Back to top |
|
|
ParkourPenguin I post too much Reputation: 140
Joined: 06 Jul 2014 Posts: 4297
|
Posted: Wed Jan 13, 2021 1:43 pm Post subject: |
|
|
The use of the word "precision" in the two headers in your referred article, while correct, is misleading. Those sections refer to the mapping from the infinite precision of integers and reals (decimals) to that of the single-precision floating-point format.
For more information, precision usually correlates with significant figures in many academic fields, including computer science.
I very strongly doubt an idle game is working with infinite precision integers. Floating point numbers, while not infinitely precise, are far faster in higher orders of magnitude while being precise enough that users won't notice the difference.
Broaden your scanning approach until you find something. Unknown initial value and changed/unchanged value would be ideal if you can control your money to that extent.
_________________
I don't know where I'm going, but I'll figure it out when I get there. |
|
Back to top |
|
|
LoganDark How do I cheat? Reputation: 0
Joined: 12 Jan 2021 Posts: 4
|
Posted: Wed Jan 13, 2021 1:48 pm Post subject: |
|
|
ParkourPenguin wrote: | The use of the word "precision" in the two headers in your referred article, while correct, is misleading. Those sections refer to the mapping from the infinite precision of integers and reals (decimals) to that of the single-precision floating-point format.
For more information, precision usually correlates with [url snipped] in many academic fields, including [url snipped]. |
I assumed that's what you meant, because you said that they always have x bits of precision. I don't suppose that matters considering they only show 4 decimal digits of precision once you get into the trillions.
ParkourPenguin wrote: | I very strongly doubt an idle game is working with infinite precision integers. Floating point numbers, while not infinitely precise, are far faster in higher orders of magnitude while being precise enough that users won't notice the difference. |
To be fair, if I were making an idle game with very large numbers, the fact that doubles lose precision as they get larger would prompt me to use a big decimal, or at least rational arithmetic with biginteger components (like what my calculator uses). Although, that last one is inefficient in many ways, two doubles like you described would probably be way better.
Anyway, the topic of this post is pretty much dealt with - it ended up being a single double, yay. Now to figure out how to find the source of truth for all those memory addresses with the same value. Sigh...
|
|
Back to top |
|
|
|
|
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 cannot download files in this forum
|
|