Group Search | ![]() |
![]() |
Group Searches are used when you know that several values are in the same region of memory, but you don’t know their order, or if you know their order but don’t know their values.
I Know the Values are Close TogetherThere are two sets of options to use if you know the values but don’t know how close they are together.
In this case, you must specify the group size and enter the values that are to be found within that range. The following chart explains the options related to this type of search. A group is a series of bytes that are to be checked for containing the specified elements.
Total Group Elements indicates the number of elements in the group. If each element is of type short and there are 5 elements, the group size is 2 × 5, or 10. The scanner will then buffer sets of 10 bytes (a group) and check to see if they match the specified criteria, adding them to the Found Addresses list if they match. If a group (set of 10 bytes in this case) matches the specified criteria, it means all values listed in Values to Find are inside that set of 10 bytes. For example, if we search using the criteria specified in the picture above, with Total Group Elements set to 5 and a Values to Find of 45, 56, and 12, each as bytes, we may get the following list of returns:
In each group of 5 bytes, we can find 45, 56, and 12. Because of the options used, these bytes can appear in any order and any number of times, as shown above.
I Know the Order of the Values, but not the ValuesSometimes you can see a pattern in the game but not know the values of the data used to represent the pattern. This raises need for a special type of Group Search called the Relative List Order search, sometimes called the USD search. It gets the name USD from the values you must enter into the Values to Find. The following chart explains their meanings. Letters are not case-sensitive
Each letter in Values to Find is an element of the type specified in Treat Elements in List as. Each element is based off the element before it in the list, except for unknown elements. Because of this, the list must begin with a U. Using the above picture and searching for lists of bytes with the USD string ussdssdds, we may get the following return. The first value is unknown. The next value is the same as that value, and so is the next. The next value is different from the previous, but the following two values are the same as it. The next value is different, and the next value is different again, followed at last by a value that is the same as it.
But How is This Useful?It depends on your needs and interests. USD searches are important in various types of game-resource hacking. If you wanted to make extremely accurate maps for Super Mario World, you can use USD searches to get the tile information used to make each map in the game. Remember, not all hacking is meant to hurt others. But resource hacking isn’t the only use for USD searches. An example that appeals to a larger range of people is the idea of hacking grid-based games, such as Tetrinet 2. Using USD searches is an easy way to find the board data—use the colors of the blocks to create a list order. Once you have found the board in RAM, you can make online bots play your game for you, using MHS’s scripting capabilities.
Common Options
Additional NotesThe search itself always starts at the lower address and goes to the higher address, regardless of the order in which they are entered. All search data entered into the dialog is saved if you click OK and perform a search, which allows you to repeat searches without having to fill out every box again. Only if you perform a search will the previous results be lost. Relative List-Order searches allow Sub Searching. See Sub Search.
Tips
|
Copyright © 2006 Shawn (L. Spiro) Wilcoxen |