 |
Cheat Engine The Official Site of Cheat Engine
|
| View previous topic :: View next topic |
| Author |
Message |
Blunderbread How do I cheat?
Reputation: 0
Joined: 23 Nov 2012 Posts: 8
|
Posted: Fri Nov 23, 2012 11:27 pm Post subject: Minecraft Multi level pointer help |
|
|
Hi,
This may be my first post but this is certainly not my first experience with cheat engine. I never come to the forums because I can usually figure things out before long. I'm stumped on this problem with minecraft though:
I can find the addresses for food level and health, but I have a really tough time with the pointer scans. I could say that I did the complete CE tutorial, but I don't think that would suffice for most people. So, to show that I'm not inept, here's the base address of health:
"jvm.dll"+0066ED50
offsets (hex, in order from base address to the last pointer): 1A0, 1A8, 68, 70, 68, 1A8
I can reliably close minecraft and open it back up with the above base address. For some reason, I can't find a base address for food level that works. I know the address I keep finding is right because the food will change to whatever I want and stay there. I used 4 threads in the pointer scan and a max level of 6.
Why doesn't the same work for food level? I even tried expanding the max level to 7 and the max offset to 4096 for the lulz.
Specs (if applicable): Windows 7, 64-bit, CE 6.1
EDITED: Resized image
| Description: |
| I don't always get 0 results, but after rescanning memory for the updated address after restarting minecraft, none of the pointers stick around. |
|
| Filesize: |
222.61 KB |
| Viewed: |
38565 Time(s) |

|
|
|
| Back to top |
|
 |
Dark Byte Site Admin
Reputation: 470
Joined: 09 May 2003 Posts: 25807 Location: The netherlands
|
Posted: Sat Nov 24, 2012 3:51 am Post subject: |
|
|
Try a structsize of 8192
But before you waste time, is the difference between hp and food always the same?
If so, you can copy/paste the hp pointer and adjust the offset so the final address points to your food
_________________
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 |
|
 |
Gniarf Grandmaster Cheater Supreme
Reputation: 43
Joined: 12 Mar 2012 Posts: 1285
|
Posted: Sat Nov 24, 2012 2:03 pm Post subject: |
|
|
| @Dark Byte: let's assume you have a base class named LivingObject and a subclass called HungryPlayer. Do you know if in java (minecraft seems to be written in java) the data for the base class and the one specific to the subclass are allocated contiguously?
|
|
| Back to top |
|
 |
Dark Byte Site Admin
Reputation: 470
Joined: 09 May 2003 Posts: 25807 Location: The netherlands
|
Posted: Sat Nov 24, 2012 2:29 pm Post subject: |
|
|
I'm not sure about java,but in most systems the data of a subclass follows directly after that of a base class.
Assuming that HungryPlayer is a subclass of LivingObject then the variables of LivingObject will be in the data of HungryPlayer
Of course, judging by the name i'm not sure if it's a subclass. Why not just Player With a hunger var?
_________________
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 |
|
 |
Blunderbread How do I cheat?
Reputation: 0
Joined: 23 Nov 2012 Posts: 8
|
Posted: Sat Nov 24, 2012 2:47 pm Post subject: |
|
|
minecraftwiki[.]net\wiki\Player[.]dat_format
The player follows the NBT structure. Food is controlled by 3 variables, however I only care about the food level (more info in hunger section)
I compared the differences (in hex) for the address numbers of HP and food, and they were different each time. I thought that was genius when I first saw your suggestion, but it sucks that it didn't work.
Pointer scan: I let it run for ~3900 seconds (> 1 hour) and the scan was inconclusive at level 7 with a max offset of 8192. I know that I'm supposed to run this until completion, but I got impatient. I started the scan again ~11 minutes ago and I'll let it run through the night if need be. Is there another way to go about this?
For flash games, I use SWF decompiler. Is there an analogous way to do this for java, C++, or other languages?
Also, why does java/minecraft have such difficult pointers?
EDIT: clarified "it"
|
|
| Back to top |
|
 |
Gniarf Grandmaster Cheater Supreme
Reputation: 43
Joined: 12 Mar 2012 Posts: 1285
|
Posted: Sat Nov 24, 2012 4:42 pm Post subject: |
|
|
| Dark Byte wrote: | | Of course, judging by the name i'm not sure if it's a subclass. Why not just Player With a hunger var? | Seeing the link Blunderbread posted, it's probably just a Player class with a hunger variable, subclassing LivingObject because player.dat has a foodLevel variable, but I didn't see any health-like one.
| Blunderbread wrote: | | The player follows the NBT structure. Food is controlled by 3 variables, however I only care about the food level (more info in hunger section) | In another thread I saw a guy who used aobscans to scan for the variable nametags to cheat in minecraft. I don't know how often variables are reallocated though.
| Blunderbread wrote: | | For flash games, I use SWF decompiler. Is there an analogous way to do this for java, C++, or other languages? | There are several for java, however I heard minecraft is obfuscated, so you will likely end up with a ton of variable/functions named Var123456 or Func23abc7. Perhaps strings for nametags can somewhat guide you though.
For c++ it's not quite ready yet. Plus you will not retrieve the variable and function names (save for a few exceptions). You can have a look at http://www.backerstreet.com/rec/rec.htm if you want though.
| Blunderbread wrote: | | Also, why does java/minecraft have such difficult pointers? |
Hmm... because java is a (pseudo) interpreted language which means his own memory manager that places variables the (odd) way he wants?
Or maybe minecraft might be coded an odd way that make extensive use of pointers?
Or perhaps because java claims to be (more or less) secure, so it wouldn't surprise me if they shuffle their variables' position so as to make malware makers' lives harder.
|
|
| Back to top |
|
 |
Blunderbread How do I cheat?
Reputation: 0
Joined: 23 Nov 2012 Posts: 8
|
Posted: Mon Nov 26, 2012 11:03 pm Post subject: |
|
|
| Quote: | | Perhaps strings for nametags can somewhat guide you though. |
Is there a definitive guide for this out there that you use (or even made)?
The only thing I know about AoB's is disassembling flash, so I didn't follow what you meant.
Another general question: How long do pointer scans usually take for certain offsets, with what memory cost? My HDD has a capacity of 681 GB and 450 free atm. I'm concerned that I can't fully run a lv 7 pointer scan with 4096 as the max offset...
|
|
| Back to top |
|
 |
Gniarf Grandmaster Cheater Supreme
Reputation: 43
Joined: 12 Mar 2012 Posts: 1285
|
Posted: Tue Nov 27, 2012 4:34 am Post subject: |
|
|
| Blunderbread wrote: | | Is there a definitive guide for this out there that you use (or even made)? | None I know of, unless you want to call this post a "definitive guide".
| Blunderbread wrote: | | I didn't follow what you meant. | In auto assembler script there is a command called aobscan(Label,Signature) which will scan for Signature (ex: 01 23 45 67 89) and set Label to the first address where the signature is found.
Usually it's used to scan for signatures within the game code, but nothing prevent you from scanning for a signature that is in the game data, except that games where this approach is useful are very rare.
1-First you'll have to make sure this approach is valid, by finding your food level in memory, right clicking on it->browse this memory region, and going up one line or two (in the lower pane). If you see the word "foodLevel" appear, it'll work, otherwise either the guy was spewing BS, or it's a bit more complicated.
2-You'll then use "foodLevel" (in hex)+some of the bytes around if needed as your signature, calculate the distance between the beginning of the signature and the actual 4 bytes that hold your food and patch the table below:
| Code: | <?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>0</ID>
<Description>"enable food hack"</Description>
<Color>80000008</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[enable]
label(FoodLevelAddress)
aobscan(FoodLevelAddress_aob,03 09 00 66 6F 6F 64 6C 65 76 65 6C)
registersymbol(FoodLevelAddress)
//03 -> tag type = int
//09 00 -> tag name legnth = 9 characters
//66 6F 6F 64 6C 65 76 65 6C -> "foodLevel" in hex
FoodLevelAddress_aob+c: //+c = 12 = the distance between the beginning of the aobsignature
FoodLevelAddress: //and the beginning of the data to freeze
[disable]
unregistersymbol(FoodLevelAddress)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>1</ID>
<Description>"food level"</Description>
<Color>80000008</Color>
<VariableType>4 Bytes</VariableType>
<Address>FoodLevelAddress</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
|
IF this approach is valid AND IF the wiki is accurate, this script MIGHT actually work as is.
The problem is that whenever the game will reallocate foodlevel, cheat engine won't know it and will continue to write/freeze your food level to the wrong place. You'll have to re-enable the script to find and freeze the new foodlevel address.
|
|
| Back to top |
|
 |
Rydian Grandmaster Cheater Supreme
Reputation: 31
Joined: 17 Sep 2012 Posts: 1358
|
|
| 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 can download files in this forum
|
|