Hotkeys
Freeze/lock a value (existing feature).
Supported directly with Hotkeys, as apparently you saw.
Set a current value
Supported directly with Hotkeys. Set Hotkey function to
Poke. Supply the address, value, and size.
Add to current value
This is a more generalized feature that you can already do with Hotkeys, but because addresses can be any type and you could want to increase by any amount, this is not directly supported by a specific Hotkey.
Use this script and change what you need:
- Code: Select all
VOID On_HK_90( DWORD dwAddress, DWORD dwIncBy ) {
extern DWORD e_dwValue = { "", dwAddress };
e_dwValue += dwIncBy;
}
Once you add that to your scripts and recompile, you can add a Hotkey to call this function, using
Parm 2 to indicate the address and
Parm 3 to indicate the amount by which to increase.
Parm 1 is obviously
90.
Read the help file for information regarding how to set Hotkeys to script functions.
Subtract from current value
You can use the same code as above, but supply a negative number for your
Parm 3. Or you can modify the script to use -= instead of +=, and keep
Parm 3 as a positive value.
At the moment i'm using Artmoney, a hidious piece of software but its the only memory editor that supports pointers with a limited amount of key binding options.
I have not yet found any software that has more Hotkey functionality than MHS, primarily because you have the ability to call script functions with Hotkeys which in turn allows you to do anything you want.
Furthermore, MHS offers more pointer functionality than ArtMoney.
Read about
Address Modifications, which explains the complex addresses (simplest way to add pointers to the target address) and script addresses, which allow you to make any method you want for finding the target address.
I also like there to be no limit on how many binds you can add to a single entry, eg. multiple set current value to "number" each with their own binding.
This is already supported—any key can be assigned any function, regardless of whether another key was already assigned the same function.
Also with MHS can you inject your own ASM code straight into the bound process? I'm currently using TSearch's EasyWrite to do this.
MHS automatically finds the code cave for you or creates one.
It automatically creates the JMP to your code cave and the JMP back to the original code.
It automatically recompiles the overwritten code at the new location, before or in front of your own code.
And injections can be set to automatically inject when the process is loaded in the future.
I have not yet seen better support for injections.
You can add injections by opening the
Disassembler (
Ctrl-D) and right-clicking the line where you want to inject your code. Then select
Inject Code from the pop-up menu.
After you inject your code you can view/modify/remove it later by opening the Injection Manager (
Tools/Injection Manager or
Ctrl-I on the main window).
If you didn’t already, get version 4.0.0.4, posted yesterday.
L. Spiro