Features

  • Searching
    • Data Type Search
      • Many data types, including byte, short, long, __int64, float, double, and more.
      • Many search types.
        • Exact Value
        • Not Equal To
        • Range
        • Greater Than
        • Lower Than
        • Unknown
      • Perform aligned searches (recommended).
    • String Search
      • ASCII, Unicode, binary, Wildcard, and Regular Expression searches.
      • Useful options such as Match Case, Whole Word Only, and Aligned.
      • The only memory searcher available with Wildcard and Regular Expression searches.
    • Pointer Search
      • Find dynamic and/or static pointers.
      • Find pointers that point to an exact location, not at a location, a range of locations, locations higher or lower than another location, or all pointers.
      • Save the offset of your desired address from where each found pointer points. This helps you clearly see which pointers point to areas close to your desired address.
    • Group Search
      • Find patterns of numbers using various techniques.
      • Useful for finding tilemaps in tile-based games, especially in ROM games.
    • Sub Search
      • All of the standard sub-search types, including Same, Not Equal To, Different, Increased, Decreased, Exact Value, Range, and Changed By.
      • New sub-search type helps you find your target even faster! Use "Same As Original" to find numbers that are the same as they were when you first started your search!
    • Script Search
      • Unlimited potential. You have full control over what is added to the list and what is not.
      • Easy to use and fully documented with easy-to-understand examples.
    • Fastest Searches
      • Memory Hacking Software features the fastest searches available.
    • Search Options
      • Pause the target process while searching (improves speed greatly).
      • Adjust the searching thread's priority.
      • Omit useless sections of memory from your search (improves speed greatly).
      • Postflush and precache use threading to perform file operations while the search continues.
      • Optionally use Epsilon for float/double searches. Smart Epsilon uses Epsilon only on numbers that might cause rounding errors.
  • View RAM In Real-Time
    • RAM Watcher
      • View RAM addresses as bytes, characters, integers, shorts, longs, floats, and bits, all at once. Easy to see what an address is in many different types.
      • All addresses are displayed in real-time. Watch them change as you play your game. Easy to see what addresses are related to what game actions.
    • Hex Viewer
      • Also loads any size of file quickly and with little RAM consumption.
      • View addresses literally or relatively.
      • Color codes show you areas in RAM that are static, executable, free, mapped, and unmapped. Chunk boundaries are highlighted for you, and you can optionally highlight all pointers.
      • All addresses are displayed in real-time. Watch them change as you play your game. Easy to see what addresses are related to what game actions.
      • Optionally highlight addresses that have changed. Extremely easy to determine when and why a value in RAM is changing based off your in-game actions.
      • Multiple display types show you the RAM in bytes, characters, integers, signed/unsigned shorts, signed/unsigned longs, signed/unsigned 64-bit integers, floats, and doubles.
      • Quickly jump to pointer locations.
      • Much more.
  • Debugging
    • Executable Breakpoints
      • When a breakpoint is hit, up to 3 functions can be called. Even more is that you get to decide which functions are called! But that's not all. Not only can you pick from any of the built-in functions, you can write your own using a DLL plug-in! A sample project for this type of plug-in is on this site. Still more: breakpoints can also call your script functions, making it even easier to add your own custom code for handling breakpoint hits.
    • Read/Write/Access Breakpoints
      • All the same features as above, but the break occurs when the target address is read, written or accessed. Very useful for finding the code that changes your ammo or health!
      • Built-in functions do a range of tasks, from beeping to opening a disassembly window and allowing you to step through the code.
      • Any combination of 3 functions can be used for each breakpoint, including your own custom plug-in functions and script functions.
    • Conditional Breakpoints
      • You can set any condition on a breakpoint you can imagine.
      • The conditional syntax matches that of C/C++, with keywords EAX, ECX, EDX, etc. used to access the values of registers, and new keyword HC to get the hit count of the breakpoint.
    • Exports/Imports List
      • Lists any module's exports and crosschecks them with the selected module's imports to give you a condensed list of every module from which any other module imports functions.
      • Every function is listed with its address in the target process's memory space, so hooking functions and tracing memory is exceptionally easy.
    • Save Breakpoints
      • Share with your friends easily. The exporter wraps together all the files needed to make your breakpoint work on your friends' machines.
  • Disassembling
    • Decoded Addresses
      • Calls are decoded to function names when possible.
    • Single-Stepping
    • Assemble Code
      • The Disassembler can also assemble! Change the game's code to do what you want.
    • NOP!
      • Automatically NOP entire commands quickly and easily. But what's even better is that you can also un'NOP them! For a period of time, Memory Hacking Software will remember the commands you NOP'ed and allow you to undo the NOP'ing easily.
    • Highlights
      • The Disassembler uses colors to highlight jumps, calls, and their targets when you move your mouse over them. This makes it very easy to see where a jump goes.
    • Useful Status Bar
      • The Disassembler's status bar gives you additional information. It decodes address equations such as “ESI+4*EBX” and explains ASM commands, often providing a preview of the results after they are executed.
    • Inject Code
      • Memory Hacking Software allows you to inject code into the target process more easily than you could with any other software. All you must supply is the address where you want to take control and the actual code you want to be executed. Memory Hacking Software will find a code cave for you, compile your ASM into machine code, add JMP's to the code cave and back to the original code, and it adds the instructions being overwritten by the initial JMP to your code cave. This allows you to focus on exactly what you want to do: inject code. It even gives you a preview of your code cave so you know exactly what it is doing.
    • Call Remote Functions
      • Call any function in the target process with any number of parameters.
      • Parameters can be any valid expression, making it easy to construct parameter lists.
      • The return value of the remote function is shown after being called.
      • Stable and user-friendly—little risk of crashing Memory Hacking Software or the target process if the parameters, function address, or calling type are incorrect.
    • Auto Hack
      • Shows you all the code that reads/writes/accesses addresses.
      • Explains the resulting code and shows register values at the time of execution.
    • Customize
      • Change the font to your liking. Any style or color.
      • Change the colors. Don't like the defaults? Some colors are hard to see? Like white text on a black background?
      • Change the output. Prefer IDEAL decoding? Want lower-case disassembly? Tons of options.
    • Many Features Still Beta, but Plenty to Come!
  • Inject Code
    • Specify a code-cave address, or let Memory Hacking Software find or allocate one for you.
    • Memory Hacking Software automatically adds the JMP to the code cave.
    • Adding the JMP to the code cave causes some instructions in the original code to be overwritten, but these are automatically moved to the code cave too, with your choice to put them at the beginning or end.
    • The JMP back to the original code is automatically added for you.
    • Injections can be set to load automatically when a process is opened.
  • Inject DLL’s
    • Inject DLL’s of your choice into the target process. All injected DLL’s are listed and can be removed at any time, and can even be set to automatically be removed when Memory Hacking Software closes.
    • Remotely call any function from any injected DLL inside the target process. No restrictions on calling convention (__cdecl or __stdcall), return type, or parameters. Any valid expression is allowed as a parameter, making it easy to write your parameter list.
    • Remotely calling your DLL functions is safe and easy—even if incorrect parameters are passed or the wrong calling convention is used, there is little risk of crashing the target process or Memory Hacking Software.
    • The return value is taken from the target process and shown to you.
  • Scripting
    • Memory Hacking Software features a full-sized programming language with full C capabilities. IDE, compiler, and virtual machine are all included so coders are ready to write scripts straight out of the box.
    • Syntax matches C, so there is no need to learn a new language. C/C++ coders are ready to go.
    • New extern variables make it easy to read from/write to the target progress’ RAM.
    • Scripts are compiled into bytecode like Java for extremely fast execution.
    • Includes a full 100% standard-compliant preprocessor, which even supports variadic macros.
    • Includes an extensive and fully documented API.
    • All script features are well documented and many examples are provided.
  • Hotkeys
    • Assign any function to any key.
    • Scripts can be assigned to hotkeys to allow you to perform any operation at the touch of a button.
  • Real-Time Expression Evaluator
    • All C/C++ operators recognized, including <<, >>, &, ~, ||, and !, to present a few.
    • Recognizes module names and converts them to their respective base addresses.
    • New [ ] operators read RAM from the target process and use the resulting value in the expression. For example, [([[Project64.exe+0xD6A3C]+0x62988]&0xFFFFFF)+[Project64.exe+0xD6A3C]+0x2D4] is a valid expression while Project64.exe is open.
    • All expressions are evaluated in real-time, so you see the results while the target process’s RAM changes.
  • More
    • Converting
    • Many Options
    • Many Unique Features
    • Very Stable
 
Copyright © 2004 Shawn (L. Spiro) Wilcoxen.