/state-diff
Compare two state snapshots to identify register and memory changes between two points in time
Claude Code
$ npx -y skills add dariushoule/x64dbg-skills --skill state-diff --agent claude-code
Codex
$ npx skills add dariushoule/x64dbg-skills --skill state-diff -a codex -y
Cursor
$ npx skills add dariushoule/x64dbg-skills --skill state-diff -a cursor -y
Gemini CLI
$ npx skills add dariushoule/x64dbg-skills --skill state-diff -a gemini-cli -y
GitHub Copilot
$ npx skills add dariushoule/x64dbg-skills --skill state-diff -a github-copilot -y
OpenCode
$ npx skills add dariushoule/x64dbg-skills --skill state-diff -a opencode -y
Windsurf
$ npx skills add dariushoule/x64dbg-skills --skill state-diff -a windsurf -y
SKILL.md
state-diff.SKILL.mdname: state-diff
description: Compare two state snapshots to identify register and memory changes between two points in time
allowed-tools: Bash, Read
state-diff
Compare two debuggee state snapshots and produce a detailed change analysis — which registers changed, which memory regions were modified, and what the changes mean.
Instructions
Follow these steps exactly:
1. Identify snapshots
List the available snapshots:
dir "${CLAUDE_PLUGIN_ROOT}\snapshots"If there are fewer than two snapshots, tell the user they need at least two snapshots (captured via `/state-snapshot`) and stop.
If the user specified two snapshot paths, use those directly. Otherwise, present the available snapshots and ask the user to pick the **before** (earlier) and **after** (later) snapshots.
2. Run the diff script
Execute the diff engine:
python "${CLAUDE_PLUGIN_ROOT}\skills\state-diff\state_diff.py" --before <before_snapshot_dir> --after <after_snapshot_dir>The script writes `diff_report.json` into the after-snapshot directory by default. If the user specified a custom output path, pass `--output <path>`.
3. Read the report
Use `Read` to load the generated `diff_report.json`.
4. Analyze and reason
Interpret the diff report for the user:
- **Register changes**: Explain what each changed register suggests. For example:
- RIP/EIP advanced → instructions were executed
- RSP/ESP changed → stack grew or shrank (function calls, local variables)
- RAX/EAX changed → likely a return value or computation result
- Flag changes → comparison or arithmetic results
- **Memory changes**: Explain what modified regions likely represent:
- Stack region modifications → local variables written, function arguments pushed
- Heap regions → dynamic allocations or object mutations
- Image/module regions → self-modifying code or relocations
- Look at the actual byte patterns for clues (string data, pointers, counters)
- **Synthesize a narrative**: Combine register and memory observations into a coherent explanation of what the program did between the two snapshots. For example: "The program called function X, which allocated Y bytes on the stack and wrote a string to a heap buffer."
Present the analysis in a clear, structured format with the raw evidence (hex values, addresses) supporting each conclusion.
Read more
name: state-diff description: Compare two state snapshots to identify register and memory changes between two points in time allowed-tools: Bash, Read
state-diff
Compare two debuggee state snapshots and produce a detailed change analysis — which registers changed, which memory regions were modified, and what the changes mean.
Instructions
Follow these steps exactly:
1. Identify snapshots
List the available snapshots:
dir "${CLAUDE_PLUGIN_ROOT}\snapshots"If there are fewer than two snapshots, tell the user they need at least two snapshots (captured via `/state-snapshot`) and stop.
If the user specified two snapshot paths, use those directly. Otherwise, present the available snapshots and ask the user to pick the **before** (earlier) and **after** (later) snapshots.
2. Run the diff script
Execute the diff engine:
python "${CLAUDE_PLUGIN_ROOT}\skills\state-diff\state_diff.py" --before <before_snapshot_dir> --after <after_snapshot_dir>The script writes `diff_report.json` into the after-snapshot directory by default. If the user specified a custom output path, pass `--output <path>`.
3. Read the report
Use `Read` to load the generated `diff_report.json`.
4. Analyze and reason
Interpret the diff report for the user:
- **Register changes**: Explain what each changed register suggests. For example:
- RIP/EIP advanced → instructions were executed
- RSP/ESP changed → stack grew or shrank (function calls, local variables)
- RAX/EAX changed → likely a return value or computation result
- Flag changes → comparison or arithmetic results
- **Memory changes**: Explain what modified regions likely represent:
- Stack region modifications → local variables written, function arguments pushed
- Heap regions → dynamic allocations or object mutations
- Image/module regions → self-modifying code or relocations
- Look at the actual byte patterns for clues (string data, pointers, counters)
- **Synthesize a narrative**: Combine register and memory observations into a coherent explanation of what the program did between the two snapshots. For example: "The program called function X, which allocated Y bytes on the stack and wrote a string to a heap buffer."
Present the analysis in a clear, structured format with the raw evidence (hex values, addresses) supporting each conclusion.
Other skills on x64dbg-skills.
find-oep
Smart trace-based OEP finder for packed/protected PE executables. Traces through packer stubs using intelligent stepping,…
shellcode-analyzer
Load, unpack, and analyze shellcode in x64dbg. Use this skill when the user wants to analyze shellcode, load a shellcode blob…
state-snapshot
Capture a full debuggee state snapshot (all committed memory regions + processor state) to disk for offline analysis
tracealyzer
Trace execution (into or over calls) for N steps or until a condition, then analyze the recorded instruction log
vuln-hunter
Hunt for vulnerabilities in a running debuggee by analyzing imports/exports, triaging attack surface, and iteratively testing for…
More skills from other plugins.
api-security
Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication,…
abusing-dpapi-for-cred…
Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys)…
clean-user-facing-text
Clean and finalize authorized natural-language text intended for readers by auditing suspicious invisible Unicode and rewriting…
Questions about state-diff.
- Which coding agents can use state-diff?
- state-diff installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

