Perception RE Tools
RE Tools
RE Tools is a built-in reverse engineering workbench embedded in the platform. It provides memory scanning, hex viewing, struct analysis, and disassembly in a single window — no external tools required.





Opening RE Tools
RE Tools is accessible via the platform UI. The window opens centered on screen at a size scaled to your display. It remembers its position and configuration between sessions automatically.
The window is draggable by its title bar and supports minimise and maximise via the title bar controls.
Tabs
RE Tools is split into six tabs accessible from the tab bar at the top of the window.
Process
Attach to a target process.
Process List
Displays all running processes by name and PID
Use the filter field to search by name
Select a process from the list, then click Attach to open it
The list refreshes automatically on window open; use Refresh to update manually
Process Info
Once attached, the following read-only fields are populated:
Base Address
Main module base
EPROCESS
Kernel EPROCESS pointer
PID
Process identifier
PEB
Process Environment Block address
DTB
Directory Table Base (CR3)
Modules
Lists all loaded modules for the attached process with their name, base address, and size.
Select a module to populate the Module Info fields
Dump — dumps the selected module to disk at the configured path
Scanner
Memory scanner for finding and narrowing down values in the target process.
Data Types
UInt8
1 byte
UInt16
2 bytes
UInt32
4 bytes
UInt64
8 bytes
Int8
1 byte
Int16
2 bytes
Int32
4 bytes
Int64
8 bytes
Float
4 bytes
Double
8 bytes
String
variable (UTF-8)
WString
variable (UTF-16)
PointerRef
8 bytes
IDA Pattern
byte pattern with ? wildcards
Comparison Types
Exact
Value equals input
Unknown Value
All addresses (initial scan for unknown values)
Changed
Value changed since last scan
Unchanged
Value did not change
Increased
Value is larger than before
Decreased
Value is smaller than before
Greater Than
Value exceeds input
Less Than
Value is below input
Scan Options
Heap Likely Only — restricts scan to heap-allocated VAD regions, reducing noise
Single Hit — stops after the first match
Aligned Only — only scans addresses aligned to the type's natural size
Workflow
Select a data type and comparison mode
Enter a value (or leave empty for Unknown Value)
Click First Scan to enumerate all matches
Change the value in the target, then click Next Scan to filter
Repeat until the result list is narrow enough to identify the address
New Scan resets back to a clean state; Clear discards results without resetting options
Results
Results display address, offset, and previous value. Select a result to highlight it.
Memory Read / Write
A dedicated R/W panel at the bottom of the Scanner tab lets you read or write arbitrary memory at any address without affecting the scan state:
Enter a hex or decimal address
Select the data type
Click Read to fetch the current value, or toggle to Write mode and click Write to patch memory
Hex View
Raw memory viewer with live auto-refresh.
Navigation
Enter a hex or decimal address in the Address field and click Go
Follow Ptr — reads a 64-bit pointer at the current base address and jumps to the pointed-to location
Scroll with the mouse wheel to move through memory
Display
16 bytes per row
Address column on the left (full 64-bit hex)
Hex bytes in the centre — bytes that changed since the last refresh are highlighted
ASCII column on the right — printable characters are shown as-is, non-printable bytes as
.
Auto-Refresh
The hex view refreshes automatically every 150 ms while a process is attached and a base address is set. No manual refresh required.
Editing
Click any hex byte to select it. Type hex digits to overwrite the byte in place. Changes are written directly to the target process's memory.
Structs
Visual struct inspector. Define field layouts and read live values from any base address.
Structure List (left panel)
New — creates an empty struct with a generated name
Delete — removes the selected struct
Click a struct name to select it; double-click to rename it inline
Node Inspector (right panel)
With a struct selected, the right panel shows the field list and editing controls.
Base Address
Enter a hex or decimal address in the address field. When a process is attached and a valid address is set, field values are read and updated live every 150 ms.
Adding Fields
Use the type buttons along the top of the inspector. Each click always appends a new field of that type to the end of the struct regardless of selection state. The field is named automatically by its offset (field_0XX).
Supported Field Types
Integer
Hex8, U8, U16, U32, U64, I8, I16, I32, I64
Floating Point
Float, Double
Special
Bool, Pointer
Vectors (float)
Vec2, Vec3, Vec4
Vectors (double)
Vec2D, Vec3D, Vec4D
Matrices (float)
Matrix3x4, Matrix4x4
Matrices (double)
Matrix3x4D, Matrix4x4D
Strings
UTF-8 (64 bytes), UTF-16 (128 bytes)
Layout
Array, Padding
Selecting a Field
Click any row to select it. The selected row is highlighted and its offset and type are shown in the status bar.
Renaming a Field
Double-click a field's name column to edit it inline.
Changing a Field's Type
Left-click the coloured type badge on any field row (or right-click anywhere on the row) to open the node dropdown. The dropdown contains:
Delete — removes the field entirely
Duplicate — inserts a copy of the field immediately after it at the next offset
A scrollable list of all 27 field types — click one to retype the field in-place
When retyping to a smaller type the node stays as a single field (no byte expansion). When retyping to a larger type, subsequent fields are consumed to cover the required bytes.
Import
Click Import to parse an AngelScript class, Lua table, or C++ struct definition from the clipboard and populate the struct's field list automatically. Offset comments (// 0x0XX) are used to place fields precisely.
Export
AS
AngelScript class with typed fields, copied to clipboard
Lua
Lua table with offset, type, and size per field
C++
C++ struct with typed fields and array suffixes
Export respects compound types — a UTF16 field exports as uint8 name[128] in AS, wchar_t name[64] in C++, not as 128 individual byte fields.
Disasm
Inline disassembler.
Enter a hex address in the Address field
Enter a byte count in the Size field (default 64)
Click Disassemble to decode the memory region
Results show address, raw bytes, mnemonic, and any operand annotation
Branches, calls, and returns are colour-coded
Follow Target — jumps the disassembler to the branch/call target of the selected instruction
Select a line and use the address to jump the Hex View or start a scan
Settings
Scroll Speed
Controls mouse wheel scroll rate across all panels and the struct dropdown. Range 0.01 – 2.0.
Configuration is saved automatically whenever a setting changes. There is no manual save button.
Keyboard & Mouse Reference
Scroll any list
Mouse wheel
Select item
Left click
Open field type dropdown
Left-click type badge, or right-click row
Close dropdown
Click outside, or Esc
Rename struct / field
Double-click name
Edit hex byte
Click byte, type hex digits
Move window
Drag title bar
Data Persistence
Config (
re_state.json) — window position, scroll speed, and hex refresh rate. Saved automatically ~1 second after any change.Structs (
re_structs.json) — all struct definitions including field names, types, offsets, and base addresses. Saved automatically ~1 second after any structural change.
Last updated