-
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.
plugin1
should link to where xbdm.xex was downloaded (by default, it's Hdd:\Debug\Xbdm.xex) - Reboot your Xbox 360.
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
.
When searching for numbers, adjust Compare Mode
to fit your scan. For example:
-
Equals
matches if the console value equals the search query -
LessThan
matches when the console values is less than the search query -
Between
matches 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 also how many bytes you want to process. By default, the start is 0x82600000, which is where most games start at, and the 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. packed struct)
Note: make sure your start address suits the alignment, as in, don't set the start address to something like
0x82600023
if you're searching for an Int32, instead, start searching at0x82600020
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.
You can cancel the activity once it shows
Updating results list
, and the rows become 'Hidden', but they will still be processed 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.
-
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