BringChaos wrote: ↑Wed Mar 21, 2018 3:47 pm
Dude wrote a lot of things... Scroll up.
You're fantastic.
First, thank you for finding where those two lists were stored. Second, I'm glad my being new to all of this is obvious because I don't want to put on any kind of misrepresentation here.
I find Cheat Engine and game hacking fascinating. In some games - like Subnautica, for instance - I'm able to look at other people's codes that they've written, or look at a cheat table for a game built on a similar engine, and kind of mirror what I see. I've done some slight research and, although I haven't finished reading what you've wrote yet, I'm noticing that you're regurgitating a lot of what has already been said here on the forums in some posts around here. That's a good thing, because it shows me that, although you've only posted on this forum twice, you probably know what the hell you're talking about, as do the other people that have mentioned similar things.
To engage with what you've said, I'm going to have to do so in pieces. First, thank you for opening up the line of communication privately.
Okay, here goes...
I am new to assembly. I'm also a novice at java, I knew HTML enough to build my own website when I was in high school but I'm kinda rusty now. XML looks the same to me, so I go off that language. I was taught Basic at one point in my life as well, for fun, but I haven't used that in a long time. I used to like to write macros of my own for my Ultima Online character. I used a program called EasyUO and wrote the script myself completely. It made my character go fishing in random spots based on a runebook in his inventory, cut fish up in fishsteaks when he got overweight, cook the fishsteaks when he reached a certain threshold, sell the fishsteaks to the butcher NPC, put the gold in the bank, and return to fishing. It was pages long and, if I still had it, I'd love to show it off. It was so much fun to make, and it was awesome and it made me rich in the game! Lolz... I digress...
My point is, I'm fascinated by coding but I'm very limited in my understanding of it. I appreciate you taking the time to tell me how the brackets in the language affects it. One thing I didn't understand is what it means when you say, "mov eax, [ebx] means read the value of ebx to eax". I thought a mov command was moving a value into an address - which I see that it is when the brackets are on the left register - but I don't understand what it means to "read the value" to an address. Does the cpu have to show that address the pictures too?
You said that the address that I found of [edx+ebx*4+0C] is not doing general math. Doing multiplication and addition is general math so... I'm not sure I understand this yet.
At the end there, it seems you've found everything I was looking for, but now I have to figure out how to write it into Cheat Engine to get it to work in the way I'd like it to. For instance, normally what I like to do is find a base address that everything else can be mathematically processed from, then write them all as separate codes in the table. So, the first script would find whatever that address is while the process is running for the base character, and then I'd have things underneath.
X Find Player
- Infinite Health Script
- Current Health Value Pointer
- Infinite Mana Script
- Current Mana Pointer
X Find Base Inventory
- Inventory Slot 1 Item
- Stack Amount
- Inventory Slot 2 Item
- Stack Amount
....
Normally the way I figure all that out is by using an AOB injection on a base address. Then, I write in my variable of something like [_PLayerBase], and have that register write its value to the variable. In the Cheat Table, I write my addresses like this, based on what I find within my Cheat Engine searches:
Player Health: [_PlayerBase] + 4
Player Mana: [_PlayerBase] + 8
Player Inventory Slot 1 (Just so happens to be, sometimes, in some games, based off of that _PlayerBase address): [_PlayerBase] + 60
...
The way I figure this stuff out, typically, is a hard way I'm sure. I scan for player health, find my base address that always works to inject within, and search for other addresses. I manually look for patterns ("Wow, mana is always stored 8 bytes away from Health...), and work with them. If I notice that strength and intelligence are separated by only 4 bytes, I'm liable to plug in the next few addresses that are 4 bytes away, plug in some numbers, and see if the game crashes or I achieve my hopes.
I'd like to understand both Java, and Cheat Engine better. It's fun to me. I think with help like this, from people like you, I can accomplish such a goal. Thank you.
P.S. If you could show me how you ripped all that information into such a clean, neat document on google, I'd appreciate knowing that little trick too...
To top all of this off, if you showed me how you accessed the game files in that way, I could write mods that would negate the need to cheat. I mod some of my games as well, if that's the path of less resistance to achieving my goals.