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 


Minecraft Multi level pointer help

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking
View previous topic :: View next topic  
Author Message
Blunderbread
How do I cheat?
Reputation: 0

Joined: 23 Nov 2012
Posts: 8

PostPosted: Fri Nov 23, 2012 11:27 pm    Post subject: Minecraft Multi level pointer help Reply with quote

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



pointer_scan_fail.png
 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)

pointer_scan_fail.png


Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 470

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

PostPosted: Sat Nov 24, 2012 3:51 am    Post subject: Reply with quote

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
View user's profile Send private message MSN Messenger
Gniarf
Grandmaster Cheater Supreme
Reputation: 43

Joined: 12 Mar 2012
Posts: 1285

PostPosted: Sat Nov 24, 2012 2:03 pm    Post subject: Reply with quote

@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
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 470

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

PostPosted: Sat Nov 24, 2012 2:29 pm    Post subject: Reply with quote

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
View user's profile Send private message MSN Messenger
Blunderbread
How do I cheat?
Reputation: 0

Joined: 23 Nov 2012
Posts: 8

PostPosted: Sat Nov 24, 2012 2:47 pm    Post subject: Reply with quote

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
View user's profile Send private message
Gniarf
Grandmaster Cheater Supreme
Reputation: 43

Joined: 12 Mar 2012
Posts: 1285

PostPosted: Sat Nov 24, 2012 4:42 pm    Post subject: Reply with quote

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
View user's profile Send private message
Blunderbread
How do I cheat?
Reputation: 0

Joined: 23 Nov 2012
Posts: 8

PostPosted: Mon Nov 26, 2012 11:03 pm    Post subject: Reply with quote

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
View user's profile Send private message
Gniarf
Grandmaster Cheater Supreme
Reputation: 43

Joined: 12 Mar 2012
Posts: 1285

PostPosted: Tue Nov 27, 2012 4:34 am    Post subject: Reply with quote

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 -&gt; tag type = int
//09 00 -&gt; tag name legnth = 9 characters
//66 6F 6F 64 6C 65 76 65 6C -&gt; "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
View user's profile Send private message
Rydian
Grandmaster Cheater Supreme
Reputation: 31

Joined: 17 Sep 2012
Posts: 1358

PostPosted: Tue Nov 27, 2012 5:00 am    Post subject: Reply with quote

To deobfuscate minecraft.jar, use the MCP.
http://mcp.ocean-labs.de/index.php/Main_Page
Back to top
View user's profile Send private message
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