wbx001 How do I cheat?
Reputation: 0
Joined: 23 Apr 2026 Posts: 2
|
Posted: Thu Apr 23, 2026 6:44 am Post subject: Mono Instance Scanner & Deep Pointer Support |
|
|
This is a professional release documentation for your plugin. It highlights the core features and provides a clear example of how to use the API within a Cheat Engine Auto Assembler (AA) script.
Advanced Mono Instance Scanner & API (v2.1)
A powerful developer tool and API for Cheat Engine to scan, wrap, and manipulate Mono objects with ease.
🌟 Key Features
Deep Scanning: Recursively scan class instances and add them to your address list with one click.
Smart BackingField Mapping: Access auto-properties like <Speed>k__BackingField simply by using .Speed in Lua.
Metatable Wrapper: Provides a Lua-native way to read and write Mono fields.
Pointer Chain Support: Automatically resolves nested pointers when recursion depth is set (>0).
API-First Design: Easily integrate Mono object manipulation into your own scripts.
🛠 Installation
Place MonoApi.lua into your Cheat Engine autorun folder.
Place MonoScannerUI.lua into the same autorun folder.
Restart Cheat Engine and attach to a Mono-based game.
Right-click anywhere in the Address List and select "Scan Mono Instances".
💻 Scripting API Usage
Pure Lua Example
lua
| Code: |
-- Get all instances of ExperienceManager with 1 level of nested pointers
local managers = getMonoInstances("OctoberStudio", "ExperienceManager", 1)
if #managers > 0 then
local mgr = managers[1]
print("Current XP: " .. mgr.Experience) -- Auto-maps from <Experience>k__BackingField
mgr.Experience = 99999 -- Direct memory write
-- Accessing nested object (requires depth >= 1)
if mgr.PlayerStats then
mgr.PlayerStats.Health = 100
end
end
|
Cheat Engine Auto Assembler (AA) Example
You can trigger Lua API logic directly from a standard AA script using the {$lua} block. This is perfect for "One-Click" cheats.
asm
| Code: |
[ENABLE]
{$lua}
-- This block runs when the script is enabled
local list = getMonoInstances("OctoberStudio", "ExperienceManager", 0)
if #list > 0 then
-- Example: Set a specific field on all found instances
for i, inst in ipairs(list) do
inst.Experience = 999999
inst.Level = 100
end
print("Experience Manager patches applied!")
else
print("Error: No instances found. Please enter the game world first.")
end
{$asm}
[DISABLE]
// Usually, no action is needed here for Lua-based memory writes
|
⚠️ Notes
Namespace: Use "" (empty string) for the Default Namespace.
Case Sensitivity: Class and Namespace names must match exactly as shown in the Mono Disassembler.
IL2CPP: This tool is designed for Mono runtimes. It will not work on games using the IL2CPP backend.
Update:
V1.1:
Lua Filter Expression: Added a real-time filtering field. You can now use Lua logic to filter thousands of instances.
Syntax: Must use the instance.fieldName format.
Example: instance.money == 1460 and instance.resourceKey == "boy_1"
Deep String Parsing: Enhanced System.String support.
The scanner now automatically resolves Mono String pointers.
Displays actual text content in the Address List using Unicode String type.
Dynamic Instance Counter:
The root group header now displays the class name along with the total count of matched instances.
Format: ClassName: Count (e.g., PlayerData: 3).
| Description: |
|
| Filesize: |
36.72 KB |
| Viewed: |
456 Time(s) |

|
| Description: |
|
| Filesize: |
64.9 KB |
| Viewed: |
456 Time(s) |

|
| Description: |
|
| Filesize: |
56.68 KB |
| Viewed: |
456 Time(s) |

|
| Description: |
|
 Download |
| Filename: |
monoApi.lua |
| Filesize: |
6.58 KB |
| Downloaded: |
45 Time(s) |
| Description: |
|
 Download |
| Filename: |
MonoScannerUI.lua |
| Filesize: |
10.15 KB |
| Downloaded: |
45 Time(s) |
|
|