-
Notifications
You must be signed in to change notification settings - Fork 4
Home
Here you can find in-depth information about how to use this program. A simplified wiki, with examples, exists at https://consolemods.org/wiki/Xbox_360:MemoryEngine360
For more info, see Connecting to a console.
To use for an xbox 360, you will need XBDM (Xbox Debug Monitor) installed as a plugin on your console. This can be done easily using Aurora's homebrew store and DashLaunch.
- On the Aurora dashboard, click the Back button on your controller, click Scripts, click Homebrew Store, click Other, and click Debugger Tools. It will show a prompt, click Yes.
- Launch DashLaunch, and expand the Plugins section.
plugin1should link to where xbdm.xex was downloaded (by default, it's Hdd:\Debug\Xbdm.xex) - Reboot your Xbox 360.
In the app, press CTLR + O (or click File > Connect to console...). Select Xbox 360 (XBDM), which is the recommended default connection for XB360, and click Connect.

From there, enter a value in the search query, select your Data Type and click First Scan. There's still lots of options to configure if you need more advanced scans.

Set Data Type to the type of value you want to search for. All integer types are signed, except for byte. Toggle the "Unsigned" check box to make all integers unsigned.
When searching for numbers, adjust Compare Mode to fit your scan. For example:
-
Equalsmatches if the console value equals the search query -
LessThanmatches when the console values is less than the search query -
Betweenmatches when the console value is between the two search queries. - ... and more
You can specify the string encoding type. The default is ASCII, since most strings will be using that.
The ByteArray data type is the pattern scanning type. Wildcard characters are supported using a single '?' character.
For example, when searching for FF ? ? C7 ? F2, you may find the address of FF A2 00 C7 6B F2, FF 4A 10 C7 2F F2, etc.

Here you can specify a start address and how many bytes you want to read.
By default, the start is 0x82600000, which is where most games' dynamic/heap memory is. The default length is 0x1000000 (which is 16MB).
Alignment is the value added to the address after each iteration of scanning a value. If you search at 0x82600000 and the alignment is 4, the addresses scanned are 0x82600000, 0x82600004, 0x82600008, etc.
Typically, fields of a struct are aligned to the size of the field type, so you can safely assume Int16 aligns to 2 bytes, Int64 aligns to 8, and so on. This is selected automatically for you, but you can change this value (e.g. when game uses packed structs)
Note
Make sure your start address suits the alignment. For example, don't use 0x82600023 if you're searching for an Int32. Instead, use 0x82600020
On supported consoles, click the little green table button to open a dialog, which lets you select a memory region to scan. Games are usually around the 0x82000000 area.

Once you've configured the search options and you've entered the value (or values, when searching between/not between) into the query(ies), click First Scan. This will search the scanning region in the Additional Options panel for values that match your search options.
You'll see results show up in the left panel.
Since the xbox 360's XBDM connection connects via IP, the read process is very slow compared to Cheat Engine. We can only read data at around 0.8~ MB/s.
The status bar will show something like Region a/b (c/d). This means it's processing memory region A out of B, and has read C out of D bytes from the console. It may also say Chunk when Scan Memory Pages is off, since we read in chunks of 64K
Then, once the scan is complete, it may show Updating result list.... This is where it adds the results into the UI at a steady pace to prevent the UI freezing (rate of about 2000/s (system performance dependent)). It shows how many results are pending at the top.
Note
You can cancel the scan once it shows Updating results list, which makes the rows become 'Hidden', but they will still be processed during a Next Scan, along with the rows in the UI.
This reads the values of all your current results and compares them to your search query(ies) again, and removes any that do not match.
For example, you run First and Next scan for "25" (say it's an ammo count), but after first scan, you shot rounds, so the value became 22, and therefore won't show up in the next scan as you're searching for 25.
There are 2 buttons First and Prev next to the value field. These toggle whether to use the scan results' First Value or Previous Value as a search value, instead of using the search query.
For example, say you want to find results whose values changed relative to the previous scan (includes first and all subsequent next scans), Select Prev and set the Scan Type to NotEqual
This clears all search results, allowing you to run First Scan again.
The X button stops the scan.
-
Home
- Connect to a console
- Scanning Options
- Scan results & Saved Address Table
- Remote Commands
- Memory Dump
- Tools
- Preferences/App Settings
-
API
- Making a custom connection
- Busy Tokens
- Models, ViewStates, MVP & Binding
- Plugins
- Config Pages
- Brushes and Icons
- Data Manager, Context Data and Data Keys
- Commands and Shortcuts
- Context Menus
- Windows and Dialogs