User Manual

ChainVerifier User Manual

A complete walkthrough of every feature in ChainVerifier — written for real users, not developers. If you have ever wondered what a button does or how a workflow fits together, this is the place to look.

Version 2.0.0 Updated September 28, 2026 For Windows 10 / 11 (64-bit)

1 Introduction

ChainVerifier is a Windows tool that helps you find, verify, and manage pointer chains inside a running program. If you have ever tried to track a value like health, ammo, or currency in a game — and watched it move every time you restart — you already understand the problem this tool solves.

What a pointer chain is, in plain terms

A pointer chain is a step-by-step path through a program's memory. Instead of pointing directly at a value (which moves every time the program starts), a chain starts from a fixed anchor inside the program's executable and follows a series of offsets until it arrives at the value you care about. Because the anchor stays put, the chain keeps working after a restart.

What this manual covers

Every feature of ChainVerifier is described here in the order you will encounter it: from launching the app, to attaching to a process, to building and verifying chains, to scanning memory, to saving your work. If you are new to the tool, read sections one through eight in sequence. After that, feel free to jump to whichever topic interests you.

Before you begin: ChainVerifier needs Administrator rights to read and write another program's memory. This is a Windows requirement, not a design choice. Without it, the app cannot attach to anything.

2 Getting Started

Getting ChainVerifier running takes less than a minute. The app is fully portable — no installer, no background services, no changes to your system.

Step by step

1

Download the ZIP

Visit the download page and grab the latest version. The file is roughly 42 MB.

2

Extract the EXE

Right-click the ZIP and choose Extract All. Inside you will find a single file called ChainVerifier.exe. Place it wherever you like — Desktop, a dedicated folder, or even a USB stick.

3

Run as Administrator

Right-click ChainVerifier.exe and choose Run as Administrator. Windows may ask you to confirm — click Yes. If SmartScreen warns about an unknown publisher, click More info and then Run anyway.

4

You are ready

The main window opens. From here, attach to a process and start building chains — both topics are covered in the sections that follow.

Portable by design: The entire application lives in that one EXE. To uninstall, simply delete the file. No leftover registry entries, no background processes.

3 The Main Window

When ChainVerifier opens, you are looking at a single window divided into a few clearly separated areas. Getting familiar with each one will make everything else feel natural.

The top bar

At the very top sits the process bar. It shows which program you are currently attached to (or "No process opened" if you have not attached yet), along with a Browse button, a Target address field, and a Value Type dropdown. The Target address is where you tell the app what to compare against during verification. The Value Type tells it how to interpret the data it reads.

The results table

Below the process bar is the Verification Results table. This is where chains appear after you verify them. Each row shows the chain name, a short description you can add yourself, the resolved address in memory, whether the value matched your target, the current value, and a status label. Chains that match are highlighted in green so you can spot them instantly.

The chains editor

Underneath the results sits the Chains Editor. This is where you actually define chains before verifying them. You can add, edit, or delete chains here, and every change is fully reversible using Undo.

The log panel

At the bottom of the window is a log panel. It records everything the app does — attachments, scans, writes, saves, and any errors. If something does not behave as expected, the log is usually the first place to look.

The menu bar

Across the top of the window you will find six menus: File, Edit, Scan, Tools, Settings, and Help. Each one groups related actions. Every option in the menu bar is also reachable through a keyboard shortcut, which is covered in section fifteen.

You can hide what you do not need. The toolbar, status bar, and log panel can each be toggled from Settings, so you can tailor the layout to your screen and preference.

4 Attaching to a Process

Before ChainVerifier can do anything useful, it needs to attach to a running process. Attaching is simply opening a connection to another program so the tool can read and write its memory.

How to attach

  1. Open the Tools menu and choose Attach to Process — or click the Browse button in the top bar.
  2. A dialog appears listing every running process along with its PID and, optionally, its icon.
  3. Use the search box at the top of the dialog to filter the list, or scroll through it manually.
  4. Double-click a process to attach, or select it and click Attach.

What happens next

Once attached, the top bar updates to show the process name and its base address. The status indicator switches to a green tone, and the log records the successful attachment. From this point on you can build chains, scan memory, and write values.

Detaching

To detach, open the Tools menu and choose Detach. You can also simply close the target program — ChainVerifier watches for this and detaches automatically within a second or so.

Some programs cannot be attached to. Games protected by kernel-level anti-cheat tools like Easy Anti-Cheat, BattlEye, or Vanguard block all external memory access. This is intentional, and there is no workaround.

5 Working with Chains

A chain is a definition — a recipe that tells ChainVerifier how to reach a value inside a process. Every chain has four key properties: a base offset from the module, a list of intermediate offsets, a value type, and (optionally) a description.

Adding a chain

  1. Click the Add button in the Chains Editor.
  2. Optionally give the chain a name. If you leave it blank, the app generates one based on the base offset and offsets you entered.
  3. Enter the base offset in hexadecimal. A leading 0x is optional but recommended.
  4. Enter the offsets, separated by commas. Offsets may be positive or negative — for example, 0x46C, -0x10, 0xC is perfectly valid.
  5. Choose a value type from the dropdown: int32, int64, float, double, or pointer.
  6. Click Add. The chain appears in the editor and is ready to verify.

Editing a chain

Double-click any row in the chains editor, or select it and click Edit. Make your changes and save. The original value is preserved in the undo stack.

Deleting chains

You can delete a single chain, multiple chains at once, or clear the entire list. To delete multiple, hold Ctrl or Shift to select several rows first, then click Delete. To clear everything, use Clear All.

Names and descriptions

Chain names are useful when you have dozens of entries. A name like "Player Health" is far easier to recognize than "Chain 047". Descriptions go one step further — you can double-click the Description cell in the results table to add a note, and that note is saved with your file.

Shortcuts that save time: After verifying, you can remove every chain that failed by choosing Edit and then Delete All Error Chains. This is much faster than removing them one by one.

6 Verifying Chains

Verification is the core action of the whole application. When you verify, ChainVerifier walks every chain you have defined, follows each pointer in sequence, reads the value at the end, and compares it against your target.

How to run a verification

  1. Make sure a process is attached.
  2. Enter the target address in the top bar. In most workflows this is the process base address, which ChainVerifier fills in for you.
  3. Click Verify All Chains, or press F5.
  4. Results appear within a fraction of a second. With the C++ backend, even thousands of chains resolve in under a second.

Understanding the results

Each row in the results table tells a small story. A status of MATCH means the chain resolved and the value equals your expected value. A status of no match means the chain resolved but the value differed. An ERROR status means the chain could not be resolved at all — usually because a pointer in the middle of the chain was null or invalid.

Editing values directly

Double-click any value in the results table. A small dialog opens where you can type a new number and write it straight into the process. This is useful when you want to test whether a chain is really pointing at the value you think it is.

Cleaning up

After a verification run, you often find that some chains worked and many did not. Instead of clearing them all, use the Edit menu and choose Delete All Error Chains. Only the failing entries are removed; every working chain stays in place.

7 Live Value Updates

Static verification shows you a snapshot. Live updates show you the value changing in real time.

How it works

After you verify a set of chains, ChainVerifier automatically starts a background timer that re-reads each value at a fixed interval. Any value that changes is highlighted briefly, so your eye is drawn to it even in a long list. The interval is configurable from Settings, and the highlight duration can be adjusted to taste.

When live updates help

Live updates are invaluable when you are hunting a value that moves — health draining over time, ammunition counter ticking down, coordinates shifting as you walk. Watching a value change in real time tells you immediately whether a chain is pointing at the right thing.

The app is smart about pauses. If the attached program closes unexpectedly or the app is busy saving or loading, live updates stop automatically and resume when it is safe.

8 Freezing Values

Freezing is the act of holding a value steady by continuously writing it back to memory. If a program keeps changing a number but you want it to stay at a specific figure, freezing is how you enforce that.

Two ways to freeze

ChainVerifier gives you two options. The first is the Freeze column in the results table — a small checkbox next to each row. Click it to lock the current value. The second is the Freeze Manager under the Tools menu, which lets you add any address manually, choose a value, and keep it frozen for as long as you like.

When to use each

The checkbox approach is best when you have already verified chains and simply want to hold their values. The Freeze Manager is more flexible — it works with any address, even ones that are not part of a verified chain.

Frozen values are not free. Each frozen entry consumes a small amount of CPU. Freezing a handful of values is fine; freezing hundreds simultaneously is not advisable.

9 Memory Scanning

When you do not yet know where a value lives, scanning is how you find it. ChainVerifier offers five different scan modes, each suited to a slightly different problem.

Pattern scan

The pattern scanner searches for a sequence of bytes anywhere in the target's memory. Wildcards — written as ?? — match any byte, which is handy when part of the pattern changes between runs. This mode is used most often to find functions, signatures, or unique code blocks.

48 8B ?? 05 ?? ?? ?? ?? 48 85 C0

Range scan

The range scanner finds every value that falls between a minimum and a maximum. If you know that health is somewhere around one hundred, for example, a range scan between ninety and one hundred and ten will narrow things down dramatically.

Unknown value scan

Sometimes you do not even know the starting value. The unknown value scanner takes a snapshot of memory, waits for you to change something in the target program, then filters the snapshot by what changed — increased, decreased, stayed the same, or matched a specific delta. Repeat the process a few times and you quickly isolate the value.

String scan

The string scanner looks for text in memory — player names, item labels, or configuration keywords. Both ASCII and UTF-16 (Unicode) strings are supported, so you can search the way the target program stores its text.

Pointer scan

The pointer scanner is the most powerful of the five and is covered on its own in section eleven, since it deserves a little more explanation.

10 Hex Viewer & Editor

Sometimes you want to look directly at raw bytes, without any interpretation. The Hex Viewer is exactly that — a window into memory at any address you choose.

Reading memory

Open the viewer from the Tools menu. Enter an address and click Go. The window shows the bytes in the familiar layout: hex on the left, ASCII on the right, sixteen bytes per line. Use the Prev and Next buttons to page forward and backward through memory.

Editing bytes

Below the display is a write field. Type a sequence of hex bytes — for example, 48 8B 05 90 — and click Write. The bytes are written directly at the current address. This is useful when you need to patch a small instruction or revert an experiment.

Writes are immediate. Whatever you type is written the moment you click Write. There is no undo inside the hex editor — make sure the address and bytes are correct before committing.

11 Pointer Scan

The pointer scan is how you discover chains that stay stable across restarts. Instead of searching for values, it walks backwards from a known address and finds the sequences of pointers that lead to it.

Running a pointer scan

  1. Open the Pointer Scan dialog from the Scan menu.
  2. Enter the target address — typically the address of a value you already located with a range scan.
  3. Choose a maximum level. Level two or three is a good starting point; higher levels find longer chains but take longer to run.
  4. Set a maximum offset. A larger range finds more candidates but also produces more noise.
  5. Click Find Pointers. The scan runs on a background thread, so the interface stays responsive.

Sending results to your chains editor

When the scan finishes, select one or more results and click Send to Chains. Each selected chain is added to your editor, ready to verify. If you have already verified some chains and want to compare, you can run the pointer scan again after a restart to see which suggested chains survive.

Static filter: In v2.0.0 you can restrict results to chains anchored at static module addresses. This dramatically reduces the number of candidates you need to test.

12 Importing Pointer Maps

If you have used Cheat Engine to build a pointer map, ChainVerifier can import it directly. The importer understands the standard SQLite format that Cheat Engine exports and detects its structure automatically.

How to import

  1. In Cheat Engine, save your pointer map as an .sqlite file.
  2. In ChainVerifier, open the File menu and choose Import Pointer Scan, or use the Tools menu.
  3. Select the file. ChainVerifier reads it and shows you a preview of the chains it found.
  4. Choose how many to import — all of them, or only the first several thousand — and click Import to Chains.

What gets imported

Each pointer path becomes a chain with a module name, a base offset, and a list of intermediate offsets. You can verify them immediately, edit them, or delete the ones you do not need.

13 Saving & Loading

ChainVerifier saves your work in a file format called .owu. These files are encrypted, checksummed, and compressed, so they are compact and portable. You can keep as many as you like and load them on any machine.

Save, Save As, and Auto-Save

Save writes to the current file; Save As lets you pick a new location. If you have enabled Auto-Save in Settings, the app also saves periodically in the background and keeps rolling backups — up to the number you specify — so a crash or power failure never costs you more than a few minutes of work.

Opening a file

Open a chain file from the File menu, or pick one from the Recent Files submenu. The chains, descriptions, and even the log from the previous session are restored, so you can pick up exactly where you left off.

Files are tied to your machine. Because the .owu format uses a key generated on your computer, a file you save here will not open on a different machine. To move chains between computers, use Export and then Import.

14 Exporting Results

When you want to share your results with someone else, document your work, or move chains between computers, use Export. The Export Results dialog is under the File menu.

Three formats

Format Best used for
CSV Opening in Excel or any spreadsheet application
JSON Sharing with other tools, backing up, or scripting
TXT Reading as a plain report, or pasting into a document

What you can include

Before exporting, you choose which rows to include — everything, only matched chains, only error chains, or only the rows you have highlighted. This makes it easy to share just the subset that matters.

15 Hotkeys

ChainVerifier ships with a set of keyboard shortcuts for the most common actions. Every shortcut can be rebound in Settings under the Hotkeys section.

Within the app

Shortcut Action
Ctrl NNew chain file
Ctrl OOpen a chain file
Ctrl SSave
Ctrl Shift SSave As
F5Verify all chains
Ctrl FOpen the scan dialog
Ctrl ZUndo
Ctrl YRedo
DeleteDelete selected chains
Ctrl HOpen the hex viewer

Global hotkeys

In addition to the shortcuts above, ChainVerifier supports four global hotkeys that work even when the app is not focused — useful when you want to trigger an action while looking at the target program. These are disabled by default and can be enabled in Settings.

Shortcut Action
Ctrl Alt AAttach to process
Ctrl Alt SOpen scan dialog
Ctrl Alt FOpen freeze manager
Ctrl Alt HOpen hex viewer

16 Notifications

ChainVerifier can keep you informed without pulling focus away from the target program. This is most useful when you are running long scans or waiting on a verification to finish.

What you can enable

  • Windows toast notifications — a small popup appears in the corner of the screen when a scan completes or a chain matches. The notification shows the ChainVerifier icon.
  • Taskbar flashing — the app's button in the taskbar flashes to draw your attention when something important happens.
  • Sound — a short Windows sound plays when a match is found or a scan finishes. Each of these can be turned on or off independently.

All four settings live under Settings, in the File & Logs section. Notifications are intentionally lightweight and never interrupt your work.

17 Configuring the App

The Settings dialog is where you tailor ChainVerifier to fit your machine and your habits. It is organized into seven sections, each covering a distinct area of the app.

General

Startup behavior, window size memory, auto-attach, recent files limit, and whether to check for updates on launch.

Appearance

Fonts, sizes, color themes, table appearance, and which panels are visible. Six built-in themes are included, and every color can be adjusted individually if the presets do not suit you.

Behavior

How often live values refresh, how long a highlight lasts, when to confirm before closing or attaching, and what the default scan type and alignment should be.

Performance

Choose between preset performance modes — Battery Saver, Balanced, Performance, Extreme — or dive into individual settings like thread count, buffer size, and maximum results. The app detects your CPU and RAM automatically and offers sensible defaults.

Hotkeys

Rebind any keyboard shortcut, including the four global hotkeys.

File & Logs

Auto-save interval, backup count, whether to log to a file, log level, log rotation, and notification settings.

Advanced

Cache size, undo history depth, thread pool size, scan algorithm, and diagnostic options. These are for experienced users who want to fine-tune the app's behavior.

18 Keeping It Updated

ChainVerifier checks GitHub for new releases on startup. If a newer version exists, a small notification appears in the bottom-right corner of your screen.

To install an update

  1. When the notification appears, click it (or open the Help menu and click Download Latest).
  2. Your browser opens the release page with the newest ZIP.
  3. Download and extract the new EXE. Because ChainVerifier is portable, you can simply replace the old file with the new one — your settings and saved chains remain where they are.

Manual check

You can also trigger a check at any time from the Help menu by selecting Check for Updates.

19 A Typical Workflow

If you are new to pointer chains, the sequence below is a good pattern to follow. It walks through the standard way most users approach a fresh target.

1

Attach to the target

Launch the program you want to inspect, then attach to it in ChainVerifier.

2

Find the value

Use a range scan, a string scan, or the unknown value scanner to locate the value you care about.

3

Run a pointer scan

With the address in hand, use the pointer scanner to find chains that lead to it. Send promising results to the chains editor.

4

Verify and trim

Verify your chains. Remove the ones that failed. Keep the ones that resolved correctly.

5

Restart and confirm

Restart the target program, attach again, and verify once more. The chains that still work are the ones worth keeping.

6

Save and describe

Save your file, add descriptions to the chains that survived, and export a copy as a backup.

The golden rule: If a chain survives three consecutive restarts of the target program, it is almost certainly stable. If it fails even once, keep scanning.

20 Where to Get Help

If this manual did not answer your question, there are several places to look next.

Community and support

When reporting a problem

To get help as quickly as possible, include the version of ChainVerifier shown in the header, your Windows version, what you were doing when the issue happened, and — if possible — a copy of the log panel output. The log usually shows exactly what went wrong.

ChainVerifier is developed by a small team and improved with feedback from its users. If something is missing or unclear in this manual, letting us know is genuinely helpful.