Giving me results in a different format...

Need Help With an Existing Feature in Memory Hacking Software? Ask Here

Moderators: g3nuin3, SpeedWing, WhiteHat, mezzo

Giving me results in a different format...

Postby kai » Wed Mar 21, 2007 9:05 am

Hello, this is concerning the script, for which I am extremely thankful for, that was made for finding the values in the program that I'm working on right now. Currently, when I click on one of the results, it gives me a "non-standard" output format with a HUGE string of hexadecimal values. Now I don't have much of a problem with it, but since I, at this point, haven't made into a trainer, when I let a friend or sibling use the script for the game and they get a huge string of hex numbers, they think that they did something wrong. So what I'm asking is this, "Is it possible to, instead of having the editable form of the address appear in Hex, to have BOTH-or even more than two-of the values that I searched for appear instead of just one as well as them being in "Long" format so that the people that use my script in pre-trainer form can use it more efficiently?" Yes I know that that was a big question but that's what I'm asking. I would very much appreciate it if I could.
Also, in unrelated matters, I have this piece of information in my script:
Code: Select all
BYTE bBuffer0x10[0x20]

I need it to offset twenty four spaces from the last value, in all 36 from the first value that I found, the change is because the makers of the game changed the player structure to that. I can't figure what's supposed to go there. :oops:
I didn't notice anything in the help file about these so I figured I'd ask.
Thank you in advance.
I'll try to get a screen shot up shortly in case I was unclear.
kai
Sir Hacks-A-Lot
 
Posts: 32
Joined: Sat Sep 16, 2006 12:17 pm
Location: The Not so Golden State

Postby L. Spiro » Wed Mar 21, 2007 10:03 am

#1: I am already planning a scriptable display feature to allow you to display data in the main address list in any way you please. However this will not be used to diaply the value in the Modify Address dialog box because it isn’t possible. If I let the user decide the value shown there then I have no way to decode it back to an actual byte value to assign to the stored address. For example, if you had a structure with 100 bytes of data in it, but your custom script is only showing one member, iHealth, as text string “Health: 3”, that value would be printed into the modify box. When you hit OK, I would have to magically turn “Health: 3” back into 100 bytes of structure information. So in the modification dialog things will still be hex arrays, but in the main list you can use scripts to display the value however you want.


#2:
I need it to offset twenty four spaces from the last value, in all 36 from the first value that I found, the change is because the makers of the game changed the player structure to that.
And now you know one of the biggest advantages of using the scripts to map structures in the game/extern variables to use those scripts to modify values in the game.
When the structures change in the game, all you have to do is map their changes and everything works again.
In previous times, structures were mapped by simply remembering the offsets to each value and using ReadProcessMemory() with the manually calculated offsets. Of course, when the structure changed, every offset after the change had to be adjusted to account for it. If a DWORD was inserted at the start of the structure, every single offset had to have 4 added to it.
With the scripts, all you would have to do is add the same DWORD value at the start of the structure, then recompile. All offsets are then fixed immediately and you can be on your way.


Unfortunately you haven’t given me enough information to help you with this problem, and you shouldn’t need help anyway.
I'll try to get a screen shot up shortly in case I was unclear.

That is a bit of an understatement.
What is supposed to be at offset 36? And how can it get there by offsetting this value 24 from the previous value?
It is currently at offset 16 in the structure. What, am I supposed to offset this to 36?
Or am I supposed to change this so the next value is 36 bytes from the start of the structure?
And how can it be 24 bytes from the last value and 36 bytes from the start, if the last value is at offset 16? Unless you mean the last value is after bBuffer0x10, in which case the last value is at offset 48 already, and it still doesn’t work.


And why can’t you do it yourself?
BYTE = 1 byte.
WORD = 2 bytes.
DWORD = 4 bytes.
You already know that.
So how hard can it be to add all the offsets to get things to match the structure in the game?


L. Spiro
User avatar
L. Spiro
L. Spiro
 
Posts: 3129
Joined: Mon Jul 17, 2006 10:14 pm
Location: Tokyo, Japan

Postby kai » Wed Mar 21, 2007 12:27 pm

OK, as far as displaying the values I think that the screenshot should explain it well.
Image

This is the array that I have currently:

Code: Select all
         INT iHealth;         // Offset 0x0.
         INT iBuffer0x04;      // Offset 0x4.
         INT iBuffer0x08;      // Offset 0x8.
         INT iExperience;      // Offset 0xC.
         BYTE bBuffer0x10[0x20];     // Offset 0x10 (to 0x30).
         INT iMove;    // Offset 0x20.



This is more or less what I want:

Code: Select all
         INT iHealth;         // Offset 0x0.
         INT iBuffer0x04;      // Offset 0x4.
         INT iBuffer0x08;      // Offset 0x8.
         INT iExperience;      // Offset 0xC.
         BYTE bBuffer0x??[0x??];
         INT iMove;    // Offset 0x24. Hex offset for 36 from beginning, 
         //just happens to be 24 in hex. but needs to be twenty four in
         //decimal after the iExperience value

The question marks are just variables because I don't know what to put there. I've tried 24 in the question mark field after I've already found the values and every thing and have gotten no results back. I hope this made some sense.
kai
Sir Hacks-A-Lot
 
Posts: 32
Joined: Sat Sep 16, 2006 12:17 pm
Location: The Not so Golden State

Postby L. Spiro » Wed Mar 21, 2007 4:43 pm

In regards to the picture, everything is already planned.


In regards to the structure.

BYTE bBuffer0x??[0x??]; Why this set of question marks? The value there has no importance. It can be anything.

bBuffer0x10 is just as valid as bBuffer0xXX, bBuffer0xBARBIE_DOLL, bBuffer0xL_Spiro_Rocks, and bBuffer0x.
It’s a name. You put whatever you want there as long as it is alpha-numeric or underscores.

iMove is to be at offset 0x24.
iExperience is at offset 0xC and takes 4 bytes, so the distance between iExperience and iMove is 0x24 - (0xC + 0x4).

Therefore, the correct buffer size is:

Code: Select all
BYTE bBuffer0x10[0x24-(0xC+0x4)];



L. Spiro
User avatar
L. Spiro
L. Spiro
 
Posts: 3129
Joined: Mon Jul 17, 2006 10:14 pm
Location: Tokyo, Japan


Return to Help

Who is online

Users browsing this forum: No registered users and 0 guests

cron