A Demo Release

Discussions Related to Game Hacking and Memory Hacking Software

Moderators: g3nuin3, SpeedWing, WhiteHat, mezzo

A Demo Release

Postby L. Spiro » Tue Oct 03, 2006 7:35 pm

This is a demo release showcasing the level of detail I am putting into the next release(s).


Demo
Unzip into a new folder.


This means not all features have been added, not all menu items work, etc.
This is simply to showcase the new functionality on top of the minor details added to make life easier.

All searches work and the Group Search has been greatly fixed (the USD search was riddled with bugs).

New String Search types are available and all the minor annoyances from before were removed. That is, you can now select/add multiple addresses at a time, you can select/manipulate multiple addresses in the main list, etc.


All main windows remember their positions and slitter positions.
The Found Address list headers remember their positions forever and you do not need to resize them after each search.


All primary text boxes and combo boxes remember all data you enter into them forever, even after restarting, so all your search settings remain, allowing you to quickly resume hacking on a game after any breaks.
This also saves trouble in having to enter strings into String Searches or lines of text into Group Searches.



As mentioned, the String Search has been greatly enhanced.

For a simple example, try this:
String Search.
Select Regular Expression.
Enter “[_0-9a-zA-Z\\\.\?!\ ][_0-9a-zA-Z\\\.\?!\ ][_0-9a-zA-Z\\\.\?!\ ][_0-9a-zA-Z\\\.\?!\ ]+
Select any other options you desire.

This will find all sentences in the target process 4 or more characters long.
Always interesting to see all the text in your games.
And you won’t have to type that long string out again on new games as it will be remembered each time you restart Memory Hacking Software.


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

Re: A Demo Release

Postby esco » Wed Oct 04, 2006 12:04 am

L. Spiro wrote:This is a demo release showcasing the level of detail I am putting into the next release(s).


Demo
Unzip into a new folder.


This means not all features have been added, not all menu items work, etc.
This is simply to showcase the new functionality on top of the minor details added to make life easier.

All searches work and the Group Search has been greatly fixed (the USD search was riddled with bugs).

New String Search types are available and all the minor annoyances from before were removed. That is, you can now select/add multiple addresses at a time, you can select/manipulate multiple addresses in the main list, etc.


All main windows remember their positions and slitter positions.
The Found Address list headers remember their positions forever and you do not need to resize them after each search.


All primary text boxes and combo boxes remember all data you enter into them forever, even after restarting, so all your search settings remain, allowing you to quickly resume hacking on a game after any breaks.
This also saves trouble in having to enter strings into String Searches or lines of text into Group Searches.



As mentioned, the String Search has been greatly enhanced.

For a simple example, try this:
String Search.
Select Regular Expression.
Enter “[_0-9a-zA-Z\\\.\?!\ ][_0-9a-zA-Z\\\.\?!\ ][_0-9a-zA-Z\\\.\?!\ ][_0-9a-zA-Z\\\.\?!\ ]+
Select any other options you desire.

This will find all sentences in the target process 4 or more characters long.
Always interesting to see all the text in your games.
And you won’t have to type that long string out again on new games as it will be remembered each time you restart Memory Hacking Software.


L. Spiro


Niiiiiiiiiiiiiiiiiiiice.... I'm gonna try this out right now. Does this demo have the ability to use if then else statements concerning memory values and addresses like you said the next release would (Like C++ scripts basically)? Or is that gonna be in the next release?

First thing I notice right off the data.... new Interface looks really nice. I also noticed that my old save files don't work in this release.... are you permanently changing the format or is it just because this is a demo?

The multiple values copy is VERY handy.... and the new search screen is much more useful since it actually stores your recent search data into that little pull up box. Also under sub search if I input -3 and choose changed by.... it searches for the value changed by 65533.... where as if I put in changed by -65333 is searches for changed by subtracting 3.... why is that? I also noticed that once I find a value, it doesn't seem to update in the left hand box anymore... it just looks the same (again I'm assuming you know about this and it's just a demo).

Great work though... you made some MAJOR improvements on this thing. :D
Esco.... the name says it all. New Yorikan for life.
User avatar
esco
NULL
 
Posts: 148
Joined: Mon Sep 18, 2006 2:25 am
Location: Florida, a.k.a. the US's version of hell!

Postby L. Spiro » Wed Oct 04, 2006 1:38 am

Does this demo have the ability to use if then else statements concerning memory values and addresses like you said the next release would

That will be in the next demo release.
It is complicated to add that and I have to decide how it should work.
The problem is if you tie a script to the functionality of a saved address, then you save that address to a file and send it to your friend, he needs your script file also.
If I include the script file in the saved file, you can send the file to your friend and he will automatically be given the script, but the script loaded from the saved file would conflict with his scripts.

If I load the script saved in the file as a separate entity, it may consume too much RAM, as each script entity is fairly large.

Yet I don’t want to force people to send scripts with their save files as it is a hassle for the other end to load/install the script as well.

I just need to evaluate how to do everything before I can add that feature.



I also noticed that my old save files don't work in this release.... are you permanently changing the format or is it just because this is a demo?

The format is changed permenantly, however old files will be loadable in the final release.



if I input -3 and choose changed by.... it searches for the value changed by 65533

Because you searched for an Unsigned Short in the initial search.
-3 = 65,533 cast to an unsigned short.



I also noticed that once I find a value, it doesn't seem to update in the left hand box anymore... it just looks the same (again I'm assuming you know about this and it's just a demo).

No, I don’t know about it.
Never had this happen.


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

Postby esco » Wed Oct 04, 2006 7:53 am

That will be in the next demo release.


Awwwww... that's what I've been waitin on. Image

It is complicated to add that and I have to decide how it should work.
The problem is if you tie a script to the functionality of a saved address, then you save that address to a file and send it to your friend, he needs your script file also.
If I include the script file in the saved file, you can send the file to your friend and he will automatically be given the script, but the script loaded from the saved file would conflict with his scripts.

If I load the script saved in the file as a separate entity, it may consume too much RAM, as each script entity is fairly large.

Yet I don’t want to force people to send scripts with their save files as it is a hassle for the other end to load/install the script as well.

I just need to evaluate how to do everything before I can add that feature.


Chill daw.... just play it coo. It sounds like your thinkin too hard... you must be as much of a perfectionist as me. Image

As long as people can copy and paste the memory values from the main box, they could always just use that if they do NOT want the scripts included. They could just copy and paste the values to a seperate file, and save it. Same for the script, copy and paste.

As long as someone notates their scripts properly (which anyone with the most basic skill would) it wouldn't be too hard for someone to take out what they need or add their stuff in. And why would someone want to mix and match scripts from say my hack with their own hack of SOTN? If they wanted to do that they would need to compare things no matter what you do. If anything the way your doin things seems fine... scripts are seperate files, and mem addresses/values are seperate. as long as it doesn't create a ram problem (like you mentioned under certain circumstances) it should be all good.

The format is changed permenantly, however old files will be loadable in the final release.


PHEW! That's a huge relief... I thought all my work was gonna have to be redone AGAIN. I only hope the new format files are just as small as the old ones. They were great.

No, I don’t know about it.
Never had this happen.L. Spiro


Just search for unknown values and unsigned short 2 byte.... then do another search for different or decreased.... that's how i got it to happen NON STOP! The values show up in the left box, but they do not seem to update like they did in the last release. [/img]
Esco.... the name says it all. New Yorikan for life.
User avatar
esco
NULL
 
Posts: 148
Joined: Mon Sep 18, 2006 2:25 am
Location: Florida, a.k.a. the US's version of hell!

Postby L. Spiro » Wed Oct 04, 2006 9:01 am

I am doing it and they always update fine.


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

Postby esco » Wed Oct 04, 2006 9:26 am

I figured out what was wrong... thanks. I F-ed up. :)

P.S. I said it before but I must say it again.... VERY nice work with the update on the interface.
Esco.... the name says it all. New Yorikan for life.
User avatar
esco
NULL
 
Posts: 148
Joined: Mon Sep 18, 2006 2:25 am
Location: Florida, a.k.a. the US's version of hell!

Postby kai » Wed Oct 04, 2006 11:04 am

How am I supposed to edit the values in this demo?
I seem not to be able to edit anything but the name, I'm sure it's probably obvious, but how, and I know it's just a demo. Clicking on the value doesn't work.
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 Oct 04, 2006 10:43 pm

The interface that will allow you to modify the values will be very complex, so I had to save it for the next demo release.

Right now you can not change lock values, etc.


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

Postby kai » Thu Oct 05, 2006 9:07 am

ah, ok,
Thanks for telling me.
kai
Sir Hacks-A-Lot
 
Posts: 32
Joined: Sat Sep 16, 2006 12:17 pm
Location: The Not so Golden State

...about group search...

Postby WhiteHat » Sun Oct 08, 2006 8:41 am

Has the Group Search in this demo version functionality completed yet ?

I have these illustration :

MHS 3014 Pro, Group Search:
Code: Select all
Group Size : 15
Preserve Order of Bytes checked
Data List : 800 605 250 250 600
Treat Element as : Float (4 bytes)
Search from 00400000 to 7FFFE000
Search every 4 bytes checked


Demo Version, Group Search:
Code: Select all
Total Group Elements : 15
Evaluation Type : Ordered
Values to Find : 800 605 250 250 600
Treat Elements in List as : Float
Search Range : 00400000 to 7FFFE000
Search every 4 bytes checked


In above condition, MHS 3014 Pro found 1 result, while in Demo Version no result
found.... But, when in Demo version i change the Evaluation Type to Any Order, it
found exactly same address as MHS 3014 Pro...


Thank you....
User avatar
WhiteHat
Elang Djawa
 
Posts: 1059
Joined: Fri Jul 21, 2006 12:49 pm
Location: Away for a while...

Postby L. Spiro » Sun Oct 08, 2006 3:14 pm

The normal Group Search has not been modified.
The USD Group Search has actually been completed, as it was never working properly in any previous release.

Overall, the new Group Search should be working better than the previous, however it may be possible for an error to be lurking in the translation from the dialog data to the actual search parameters.


Into it I will look.


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

Postby L. Spiro » Mon Nov 13, 2006 4:24 pm

I found differences between the new and old Group Searches that I simply can not explain.
The differences I am getting are simply not logical.
It often finds the same series of bytes, but the new version sometimes find the series 4 bytes later. The series itself is correct and both returns are correct, but why it finds it 4 bytes later I can not explain.


*NEW DEMO*


This release will allow you to modify the items in the main list and allow you to apply scripting to the address calculation for values in the main list, which was so eagerly awaited.


The Hex Editor was added.



This brings the demo version almost to completeness, with the only major additions yet remaining being the hotkeys, RAM Watcher, Injection Manager, and GameHack Converter, all of which are already written but simply need to be implemented into the new system.


This would bring the demo version to the same level as the last official release, which wouldn’t include the debugger/disassembler and templates because they were planned to be removed.
Also, the new debugger/disassembler were already being rewritten when I started the project over, and not much of it is left to finish before it too can be added to the demo release.


Other minor details will be added, such as loading the old file format, adding tons of shortcuts and popup menus, and generally refining things.



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

Postby esco » Tue Nov 14, 2006 5:40 am

AAAAAHHH YEEEEEEEEEEEAAAAHHHH! That was some fast work there Spiro! I'm gonna go find some tutorials on how to assign memory values to variables and I'm gonna get to playin with this for a bit. Thanks man. :D

Aight, I've been playing with it a bit... and I have SEVERAL questions already:

1)Why is that every time do a data type search of any kind for a certain range (ex. 5b6e3f- 7b6e40) it ALWAYS starts with 400000 and then ends at my 2nd address (7b6e40)? rather than starting at 5b6e3f... doesn't matter what type of search I do same result?

2)I was using the old script you gave me for allocating more memory space, however I don't seem to have a way to activate it since I can't get into the hotkeys menu.... if there another way to do it, or do I just have to wait till you reenable hotkeys?

3)I used this script to try and set up a variable to have a certain memory value in it:

extern int wwolfaction = { "", 0x00MEMORY ADDRESS HERE};

wwolfaction= 0x0062ddc0;
if ( wwolfaction = 14 ) wolfaction = 12;

Basically.. the script is supposed to setup a variable at a memoryaddress that is created using the 1st script you gave me... then I want to ASSIGN the value stored at another memory address (62ddc0 in this case) to the variable. Lastly if the value in the variable =14, change it 12.

...........Obviously I don't know how to assign the value in a memory address to a variable (as is obvious by the above LOUSY coding), but I just wanted to see if you have any links to some sites with a snippet on stuff like this. I did some serious searching but all I find is REALLY advanced stuff that I don't understand. Other than that...it's basically a matter of doin the same thing over and over again for everything I need.

On a good note: luckily next semester I'll be taking a c programming class, which should help me a lot. :D

P.S. Congrats on the move to japan, dawg.
Esco.... the name says it all. New Yorikan for life.
User avatar
esco
NULL
 
Posts: 148
Joined: Mon Sep 18, 2006 2:25 am
Location: Florida, a.k.a. the US's version of hell!

Postby L. Spiro » Tue Nov 14, 2006 2:21 pm

1: It is probably a bug. I modified the chunk-creation routine a bit, but something like this is easy to find/fix.

2: You can use On_OpenProcess() to allocate memory when Memory Hacking Software opens the process.
Script Events
This of course is done once per process, so you have to do it all then.

Hotkeys will be in the next release and I will probably enable them tomorrow night or tonight.

3:

Code: Select all
void ChangeThings() {
    extern int iWolfAction = { "", 0x0062DDC0 };
    if ( iWolfAction == 14 ) { iWolfAction = 12; }
}


Technically this function would be called when the script locking system is available, but you can actually call this function inside your GetBaseAddress() routine in the Script Address section.

Code: Select all
MHS_ADDRESS GetBaseAddress() {
    ChangeThings();
    return 0x0062DDC0;
}


This function would of course go in the actual data item in its Script Address section.


This way, whenever Memory Hacking Software needs to get the address of the item (quite often, for updating displays and other internal processing), it will also lock the value to 12 if it is 14.

Not the standard way of using scripting to lock values, but it will work.


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

Postby esco » Wed Nov 15, 2006 12:28 pm

Found something in the new version I figured I should mention... the old version auto arranged memory addresses from lowest to highest.... this one just leaves them in the order they are inputed in. This can be VERY helpful, but I just wanted to mention that it might be a good idea to also put in an option that can auto arrange them from lowest to highest also. Just a suggestion. :)

Aight.... I messed around a bit... and here's what I came up with....

Image

As you can see when I compile it I get an error. What I basically was doing was first I put in the memory allocation code you gave me...

Next I write a small script to declare the variables, and try to set it so that when the values in roomhoriz=0 and roomvert =2 (both these values copy from the memory adresses of 629ef0 and 629ef4) it changes the value in whipdmg to 99 ( which I then want to copy to 70b5e0). My first problem is here... how do I copy the value from whipdmg BACK to 70b5e0? Does it do it automatically? Also is there a way I can DIRECTLY WRITE back into the memory address without the var?

Or to go one step further... is there a way to just write a script that does this WITHOUT variables?

<pseudocode>
if 5b6e40=3
then 7b6e3f=11
end if

I'm assuming that in this demo release the ability to "lock" or "change" values in memory with c scripts is done, right? Or did I just misunderstand you?

Also I wanted to set it up so that the minute the process is opened (epsxe.exe) all the scripts begin executing. But so far even if I JUST leave in the memory allocating code you gave me above (with the on_openprocess), save it, load it into scripts, compile it, then load the process up... NUTHING happens at all.... why is that? It used to work fine with hotkeys.

P.S. Sorry about all the REALLY stupid questions here.... but it's very hard to learn so many things at once all on my own.

EDIT: I just now noticed under each memory address itself there is now a 3rd tab designed for scripting... how do I use this to say set a value to drop to 10 if it is OVER 10 AND and a value at another memory address =9 for example? Just as an example.
Esco.... the name says it all. New Yorikan for life.
User avatar
esco
NULL
 
Posts: 148
Joined: Mon Sep 18, 2006 2:25 am
Location: Florida, a.k.a. the US's version of hell!

Next

Return to General Related Discussions

Who is online

Users browsing this forum: No registered users and 0 guests