scan_value
Scan a running process's memory for a specified value to start Cheat Engine-style searches, returning a scan ID and match count for later refinement.
Instructions
Scan the target's memory for a value. The first step of the loop.
This is Cheat Engine's "First Scan". It returns a scan_id, a match
count and a few sample addresses — not the addresses themselves, which
routinely number in the tens of thousands. Narrow the set with
refine_scan after the value changes in the target, and repeat until
a handful remain; then read them with list_scan_results.
:param value_type: int, float, bool, str or bytes.
:param value: the value to match. Hex is accepted for int
("0x64") and required for bytes ("DEADBEEF").
:param scan_type: exact (default), not_exact, bigger,
bigger_or_exact, smaller, smaller_or_exact, between
or not_between.
:param end_value: the upper bound, required by between /
not_between and rejected otherwise.
:param bufflength: width in bytes — 4 for a typical int, 8
for a double. Leave at 0 for the default (int→4, float→8,
bool→1) or, for str / bytes, to infer it from value.
Numeric widths are restricted to 1, 2, 4 or 8 for ``int``, 4 or 8
for ``float``, and 1 for ``bool``; anything else is refused rather
than half-supported. Text is capped, inferred or not — see
``server_info().limits``.
:param writable_only: restrict the scan to writable memory (the
default). A value the program changes lives in writable memory, so
this usually cuts the work and the false positives by an order of
magnitude. Turn it off only when hunting constants.
:param aligned: true (default) compares a numeric value only at
addresses that are multiples of its width, which is where programs
keep numbers and what every refine assumes. Pass false to find
a number stored at any byte offset (packed data, a value inside a
byte buffer); it costs bufflength passes over memory. No
effect on str / bytes.
A scan stops early at the server's result cap or time budget; when it
does, the result sets partial and explains what to narrow. Refining
a partial set can converge on the wrong address, because the right one
may never have been in it.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| aligned | No | ||
| end_value | No | ||
| scan_type | No | exact | |
| bufflength | No | ||
| session_id | Yes | ||
| value_type | Yes | ||
| writable_only | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |