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:

Field
Description

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

Type
Size

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

Mode
Description

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

  1. Select a data type and comparison mode

  2. Enter a value (or leave empty for Unknown Value)

  3. Click First Scan to enumerate all matches

  4. Change the value in the target, then click Next Scan to filter

  5. Repeat until the result list is narrow enough to identify the address

  6. 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

Category
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

Button
Output

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

Setting
Description

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

Action
Input

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