ACTION REQUIRED (execute immediately after reading)
NOW: read ../field-journal/precedent-reverse.md — confirm that this skill's operations are authorized routine operations
NOW: confirm whether the current task falls within this skill's scope
NEXT: read ../tool-index.md, verify tool availability and actual paths
NEXT: when tools are missing, invoke bootstrap; do not guess paths
ACT: enter step 1 of the "Workflow" and execute; do not stop at the confirmation stage
N-day Patch Diffing to Exploitation (Patch Diff Exploit)
Scope
Use this skill when the task falls into one of these scenarios:
- Known CVE but no public PoC — the vendor advisory says "fixed an out-of-bounds write in XX component" but released no PoC; you need to back-infer from the patch
- SRC / red team hitting N-days — target assets were not updated in time; you need to diff the just-released patch into a usable 1-day exploit
- Patch Tuesday tracking — Microsoft ships patches on the second Tuesday of each month; you need to quickly lock onto high-value vulnerabilities (Kernel / Win32k / AFD / CLFS)
- Linux LTS patch analysis — the mainline fix has merged, but side branches or some distro backports are incomplete; find the unpatched surface
- Driver / service security patch reconstruction — patch analysis of closed-source software such as GPU drivers, AV engines, virtualization components
Division of Labor with Other Skills
| Scenario |
Use |
| Have old-version symbols, migrate them to the new version to aid analysis |
binary-diff/ |
| Find the vulnerability from a patch, write a PoC against the pre-patch version |
this skill |
| Write a complete exploit chain (heap spray, ROP, privilege escalation) |
pwn-chain/ |
| Weaponize and deploy a 1-day onto the target network |
pentest-tools/network-attack-defense/ |
| Reverse a binary from scratch |
ida-reverse/ / radare2/ |
The key distinction: binary-diff aims to make the new version analyzable (carrying over old symbols), while this skill aims to find what bug the patch fixed and then attack the pre-patch version. The former serves defensive / research-side analysis, the latter serves offensive weaponization.
Core Principle
patched binary (after) unpatched binary (before)
↓ ↓
import into IDA/Ghidra import into IDA/Ghidra
↓ ↓
└──────── BinDiff / ghidriff ──────┘
↓
function-level diff (matched / unmatched / changed)
↓
focus on functions with mid-range match scores (0.5 - 0.9)
↓
look at what was added: bounds checks / locks / field zeroing / integer-overflow checks
↓
infer bug class: OOB / Race / Info Leak / UAF / Integer Overflow
↓
write a PoC to trigger it on the unpatched version
↓
validate: unpatched crashes / patched does not → vulnerability confirmed
Patch fix pattern → vulnerability type lookup:
| Addition |
Most likely bug class |
if (a + b < a) / __builtin_add_overflow |
Integer overflow |
KeAcquireSpinLock / mutex_lock |
Race condition (TOCTOU / double-free) |
if (idx >= MAX) / if (len > buf_size) |
Out-of-bounds read / out-of-bounds write |
RtlZeroMemory / memset(struct, 0, ...) |
Uninitialized-memory information leak |
InterlockedDecrement + refcount checks |
UAF / reference counting error |
ProbeForRead / ProbeForWrite |
Unvalidated user-mode pointers |
SeAccessCheck / capability checks |
Missing permission checks |
Removed / tightened IOCTL codes |
Attack-surface reduction (look at how to hit the old interface) |
Workflow
5-Step Complete Process
Step 1: Obtain before / after binaries
- Windows: download MSU/MSP from the Microsoft Update Catalog, unpack with expand.exe / dism
- Linux: pull .deb/.rpm from distro USN/RHSA, unpack with dpkg-deb / rpm2cpio
- Third-party software: grab the N-1 and N installers from the official site
Step 2: Align symbols
- Ingest PDBs directly when available; without PDBs, use the binary-diff skill to carry N-1 version symbols over to version N
- For the Linux kernel, fetch the matching vmlinux + System.map / debuginfo
Step 3: Binary diff
- BinDiff: feed it the two IDBs directly, inspect function-level match results
- ghidriff: one-line pip install, CLI outputs a markdown report
- Diaphora: IDA plugin, established but requires IDA Pro
Step 4: Locate changes
- Filter functions with match scores of 0.5-0.95 (identical ones are skipped; totally different ones are usually additions / renames)
- Focus on: new ifs / new loop bounds / removed code blocks (what got removed is also a clue)
- Use an LLM on before/after pseudocode to infer the bug class (see references/root-cause-and-poc.md)
Step 5: Write the PoC
- Integer overflow: construct boundary values (INT_MAX-1, 0xFFFFFFFF)
- Race: multi-threaded hammering, high-frequency open/close + ioctl concurrency
- UAF: spray → free → reuse pattern
- OOB: precisely control len / index to cross the boundary
- Verify that the patched version no longer crashes and the unpatched version crashes reliably → bug reproduced
Tool Invocation Order
Download patch → unpack → load into IDA/Ghidra → BinDiff/ghidriff → inspect unmatched/low-match functions
→ LLM infers bug class → write PoC → run on unpatched → crash → done
Typical Scenario Examples
Scenario 1: Windows Patch Tuesday — Kernel CVE Reproduction
Background: November 2025 Patch Tuesday, MSRC advisory CVE-2025-62215
Windows Kernel race condition leading to a double free, CVSS 7.0, local privilege escalation
Microsoft shipped only a patch, no details, no public PoC
Goal: reproduce a PoC, verify that unpatched Windows 11 22H2 / 23H2 can be escalated
Steps:
1. Search the Microsoft Update Catalog for "2025-11" + the KB number, download two versions:
- 22H2 build 22621.xxxx (unpatched)
- 22H2 build 22621.yyyy (after patching)
Commands:
expand.exe Windows-KB5052000-x64.msu -F:* C:\out\patched\
expand.exe C:\out\patched\Windows-KB5052000-x64.cab -F:* C:\out\patched\
Extract ntoskrnl.exe / win32k.sys / win32kfull.sys / afd.sys
2. Ingest PDBs for both versions (Microsoft symbol server):
symchk /v /r ntoskrnl.exe /s SRV*C:\sym*https://msdl.microsoft.com/download/symbols
3. Run BinDiff:
bindiff old.BinExport new.BinExport
or ghidriff:
ghidriff ntoskrnl_old.exe ntoskrnl_new.exe -o diff_out/
4. Read the report, filter functions with similarity 0.6-0.95.
Suppose an NtXxxIoctl-type function gained a block:
KeAcquireSpinLockRaiseToDpc(&obj->Lock);
if (obj->RefCount == 0) { ... goto cleanup; }
→ a lock + refcount check was added → race + double free, matching the advisory description
5. Write the PoC: user-mode multi-threading calling NtClose + triggering the IOCTL on the same object simultaneously,
creating a race window between the close-side free and the IOCTL still using it
Crash lands on the subsequent free path after ObfDereferenceObject in ntoskrnl
6. Verify:
- Run the PoC on unpatched 22621.xxxx, BSOD within ~30 seconds (BAD_POOL_HEADER or DOUBLE_FREE)
- Run the same PoC on patched 22621.yyyy, no anomalies at all
→ reproduction successful
Scenario 2: Linux Kernel LTS Branch Patch — Find Unfixed Side Branches
Background: mainline 6.x already fixed an OOB write in some net subsystem
Ubuntu 22.04 (5.15 LTS) USN has published the update
But some OEM kernels / Azure kernels backport more slowly
Want to confirm whether the un-updated side branch is still exploitable
Goal: take patched/unpatched kernels, diff out the binary change for the fix commit,
rewrite the PoC on the unpatched side branch
Steps:
1. Pull the patched and unpatched packages:
apt download linux-image-5.15.0-101-generic # patched
apt download linux-image-5.15.0-100-generic # unpatched
dpkg-deb -x linux-image-5.15.0-101-generic_*.deb ./patched/
dpkg-deb -x linux-image-5.15.0-100-generic_*.deb ./unpatched/
Extract boot/vmlinuz → restore the ELF with extract-vmlinux
2. Fetch the matching dbgsym:
apt download linux-image-unsigned-5.15.0-101-generic-dbgsym
3. Use ghidriff (Linux-friendly):
ghidriff vmlinux_5.15.0-100 vmlinux_5.15.0-101 \
-o /tmp/kdiff/ --max-section-funcs-analyze 8000
4. Search the report for changed functions in net/ipv4/ net/ipv6/ net/sched/ and other subsystems
Find that pre-patch, the skb_copy_bits call lacked an upper-bound check on skb->len
→ OOB read, potentially escalatable to OOB write with a triggerable sysctl
5. On the unpatched side branch (e.g., an Azure 5.15.0-1080 version lagging on backports)
cross-verify: has the fix for the same function already been backported?
If not → the side branch is still exploitable → write a PoC replay
6. Write the PoC: adapt a syzkaller harness / a direct C PoC triggering the corresponding syscall
Verify the side branch panics / KASAN reports OOB
Notes
- Legal boundaries — weaponizing an N-day must stay within authorized scope (SRC / bug bounty / your own lab machines / CTF). Hitting production environments directly with a 1-day is tantamount to intrusion
- A patch may only "shrink the blast radius" — seeing a patch does not mean it is a complete fix; it may only close one exploitation path while the original bug is still reachable via other paths (one bug, many meals)
- Do not be fooled by variable names/types — Windows patches often do cleanup / renames along the way, which look like big changes but are actually irrelevant. Look at control flow and data flow, not token-level diffs
- A Microsoft patch may add a mitigation rather than a fix — CFG hardening like
_guard_xfg_dispatch_icall_fptr is not a fix, it is a mitigation
- Anonymization — when publishing write-ups / PoCs, sanitize target machine names, intranet IPs, and usernames (use
{target_ip} {username} placeholders)
- The patched version must pass a harmless test — do not run only on unpatched; otherwise the crash may be environmental, not the vulnerability
- Binary diffing is not omnipotent — compiler upgrades / optimization-level changes also reshuffle function layouts; first compare version N against N-1 (same compiler), do not cross major versions
On-Demand Bootstrap
Tool Dependencies
| Tool |
Purpose |
Auto-installable |
| BinDiff (Google, 5.x+) |
Function-level binary diff, IDA/Ghidra plugin |
✓ (official .deb / .msi) |
| Diaphora |
Established IDA diff plugin, requires IDA Pro |
✓ (git clone) |
| ghidriff |
Ghidra headless CLI diff, markdown output |
✓ (pip install ghidriff) |
| DeepDiff (commercial) |
Next-gen diff tool, higher accuracy |
✗ (commercial license) |
| Ghidra |
Runtime base for ghidriff |
✓ |
| IDA Pro |
Runtime base for BinDiff / Diaphora |
✗ (commercial) |
| Microsoft Update Catalog |
Download MSU/MSP patch packages |
Online service |
| wsuspect-proxy |
Transparently intercept Windows Update traffic to grab patches |
✓ (git clone) |
| expand.exe / dism |
Unpack MSU / cab |
✓ (Windows built-in) |
| rpm2cpio / dpkg-deb |
Unpack Linux distro packages |
✓ |
| symchk |
Pull PDBs from the Microsoft symbol server |
✓ (Windows SDK) |
Bootstrap Command
powershell -NoProfile -ExecutionPolicy Bypass -File "<SKILL_ROOT>\skills\scripts\bootstrap-reverse.ps1" -Capability @('bindiff','ghidriff','ghidra','wsuspect-proxy') -StartServices
For detailed tool comparison and commands, see references/diff-tools-comparison.md.
For the detailed Patch Tuesday workflow, see references/patch-tuesday-workflow.md.
For root-cause back-inference and PoC templates, see references/root-cause-and-poc.md.
Routing Context
Upstream entry points: skills/SKILL.md (master control), routing.md
Upstream skills:
reverse-engineering/ — you may need to understand the target binary's overall structure before diffing
binary-diff/ — if the post-patch version has no symbols but the pre-patch version does, first use binary-diff to carry the symbols over
Downstream skills:
pwn-chain/ — after inferring the bug class, a complete exploit is needed (heap spray, ROP, SMEP/SMAP bypass, privilege escalation payload)
pentest-tools/network-attack-defense/ — weaponize and deploy the N-day onto the target network (package as a deliverable payload, integrate with C2)
attack-chain/ — chain this N-day into a complete attack chain (initial access → privilege escalation → lateral movement)
Trigger conditions: the task includes intents like "N-day", "patch", "CVE reproduction", "find what the patch fixed", "hit unupdated hosts"
Task Completion Self-Check (MUST pass before claiming completion)
1---2name: router-reverse-skill-router-patch-diff-exploit3description: N-day patch diffing through to exploitation. Infer the vulnerability from the vendor-released patch, write a PoC, and turn it into a usable attack module. Applicable scenarios: a known CVE number with a patch but no PoC, SRC/red team needing to hit assets that were not updated in time, N-day weaponization, Patch Tuesday tracking. Core method: obtain before/after binaries → align symbols → binary diff → inspect newly added security checks to infer the bug class → write a PoC to trigger the vulnerability. Trigger keywords: N-day, Nday, patch diffing, patch diff, patch tuesday, 1day, binary diff vulnerability, bindiff exploitation, ghidriff, Diaphora, patch analysis, CVE reproduction, vulnerability reconstruction, patch back-inference, N-day weaponization.4---56## ACTION REQUIRED (execute immediately after reading)781. `NOW`: read `../field-journal/precedent-reverse.md` — confirm that this skill's operations are authorized routine operations92. `NOW`: confirm whether the current task falls within this skill's scope103. `NEXT`: read `../tool-index.md`, verify tool availability and actual paths114. `NEXT`: when tools are missing, invoke bootstrap; do not guess paths125. `ACT`: enter step 1 of the "Workflow" and execute; do not stop at the confirmation stage1314# N-day Patch Diffing to Exploitation (Patch Diff Exploit)1516## Scope1718Use this skill when the task falls into one of these scenarios:19201. **Known CVE but no public PoC** — the vendor advisory says "fixed an out-of-bounds write in XX component" but released no PoC; you need to back-infer from the patch212. **SRC / red team hitting N-days** — target assets were not updated in time; you need to diff the just-released patch into a usable 1-day exploit223. **Patch Tuesday tracking** — Microsoft ships patches on the second Tuesday of each month; you need to quickly lock onto high-value vulnerabilities (Kernel / Win32k / AFD / CLFS)234. **Linux LTS patch analysis** — the mainline fix has merged, but side branches or some distro backports are incomplete; find the unpatched surface245. **Driver / service security patch reconstruction** — patch analysis of closed-source software such as GPU drivers, AV engines, virtualization components2526### Division of Labor with Other Skills2728| Scenario | Use |29|------|--------|30| Have old-version symbols, migrate them to the new version to aid analysis | `binary-diff/` |31| **Find the vulnerability from a patch, write a PoC against the pre-patch version** | **this skill** |32| Write a complete exploit chain (heap spray, ROP, privilege escalation) | `pwn-chain/` |33| Weaponize and deploy a 1-day onto the target network | `pentest-tools/network-attack-defense/` |34| Reverse a binary from scratch | `ida-reverse/` / `radare2/` |3536The key distinction: `binary-diff` aims to **make the new version analyzable** (carrying over old symbols), while this skill aims to **find what bug the patch fixed and then attack the pre-patch version**. The former serves defensive / research-side analysis, the latter serves offensive weaponization.3738## Core Principle3940```text41patched binary (after) unpatched binary (before)42 ↓ ↓43 import into IDA/Ghidra import into IDA/Ghidra44 ↓ ↓45 └──────── BinDiff / ghidriff ──────┘46 ↓47 function-level diff (matched / unmatched / changed)48 ↓49 focus on functions with mid-range match scores (0.5 - 0.9)50 ↓51 look at what was added: bounds checks / locks / field zeroing / integer-overflow checks52 ↓53 infer bug class: OOB / Race / Info Leak / UAF / Integer Overflow54 ↓55 write a PoC to trigger it on the unpatched version56 ↓57 validate: unpatched crashes / patched does not → vulnerability confirmed58```5960Patch fix pattern → vulnerability type lookup:6162| Addition | Most likely bug class |63|---------|------------------|64| `if (a + b < a)` / `__builtin_add_overflow` | Integer overflow |65| `KeAcquireSpinLock` / `mutex_lock` | Race condition (TOCTOU / double-free) |66| `if (idx >= MAX)` / `if (len > buf_size)` | Out-of-bounds read / out-of-bounds write |67| `RtlZeroMemory` / `memset(struct, 0, ...)` | Uninitialized-memory information leak |68| `InterlockedDecrement` + refcount checks | UAF / reference counting error |69| `ProbeForRead` / `ProbeForWrite` | Unvalidated user-mode pointers |70| `SeAccessCheck` / capability checks | Missing permission checks |71| Removed / tightened `IOCTL` codes | Attack-surface reduction (look at how to hit the old interface) |7273## Workflow7475### 5-Step Complete Process7677```text78Step 1: Obtain before / after binaries79 - Windows: download MSU/MSP from the Microsoft Update Catalog, unpack with expand.exe / dism80 - Linux: pull .deb/.rpm from distro USN/RHSA, unpack with dpkg-deb / rpm2cpio81 - Third-party software: grab the N-1 and N installers from the official site8283Step 2: Align symbols84 - Ingest PDBs directly when available; without PDBs, use the binary-diff skill to carry N-1 version symbols over to version N85 - For the Linux kernel, fetch the matching vmlinux + System.map / debuginfo8687Step 3: Binary diff88 - BinDiff: feed it the two IDBs directly, inspect function-level match results89 - ghidriff: one-line pip install, CLI outputs a markdown report90 - Diaphora: IDA plugin, established but requires IDA Pro9192Step 4: Locate changes93 - Filter functions with match scores of 0.5-0.95 (identical ones are skipped; totally different ones are usually additions / renames)94 - Focus on: new ifs / new loop bounds / removed code blocks (what got removed is also a clue)95 - Use an LLM on before/after pseudocode to infer the bug class (see references/root-cause-and-poc.md)9697Step 5: Write the PoC98 - Integer overflow: construct boundary values (INT_MAX-1, 0xFFFFFFFF)99 - Race: multi-threaded hammering, high-frequency open/close + ioctl concurrency100 - UAF: spray → free → reuse pattern101 - OOB: precisely control len / index to cross the boundary102 - Verify that the patched version no longer crashes and the unpatched version crashes reliably → bug reproduced103```104105### Tool Invocation Order106107```text108Download patch → unpack → load into IDA/Ghidra → BinDiff/ghidriff → inspect unmatched/low-match functions109 → LLM infers bug class → write PoC → run on unpatched → crash → done110```111112## Typical Scenario Examples113114### Scenario 1: Windows Patch Tuesday — Kernel CVE Reproduction115116```text117Background: November 2025 Patch Tuesday, MSRC advisory CVE-2025-62215118 Windows Kernel race condition leading to a double free, CVSS 7.0, local privilege escalation119 Microsoft shipped only a patch, no details, no public PoC120121Goal: reproduce a PoC, verify that unpatched Windows 11 22H2 / 23H2 can be escalated122123Steps:1241. Search the Microsoft Update Catalog for "2025-11" + the KB number, download two versions:125 - 22H2 build 22621.xxxx (unpatched)126 - 22H2 build 22621.yyyy (after patching)127 Commands:128 expand.exe Windows-KB5052000-x64.msu -F:* C:\out\patched\129 expand.exe C:\out\patched\Windows-KB5052000-x64.cab -F:* C:\out\patched\130 Extract ntoskrnl.exe / win32k.sys / win32kfull.sys / afd.sys1311322. Ingest PDBs for both versions (Microsoft symbol server):133 symchk /v /r ntoskrnl.exe /s SRV*C:\sym*https://msdl.microsoft.com/download/symbols1341353. Run BinDiff:136 bindiff old.BinExport new.BinExport137 or ghidriff:138 ghidriff ntoskrnl_old.exe ntoskrnl_new.exe -o diff_out/1391404. Read the report, filter functions with similarity 0.6-0.95.141 Suppose an NtXxxIoctl-type function gained a block:142 KeAcquireSpinLockRaiseToDpc(&obj->Lock);143 if (obj->RefCount == 0) { ... goto cleanup; }144 → a lock + refcount check was added → race + double free, matching the advisory description1451465. Write the PoC: user-mode multi-threading calling NtClose + triggering the IOCTL on the same object simultaneously,147 creating a race window between the close-side free and the IOCTL still using it148 Crash lands on the subsequent free path after ObfDereferenceObject in ntoskrnl1491506. Verify:151 - Run the PoC on unpatched 22621.xxxx, BSOD within ~30 seconds (BAD_POOL_HEADER or DOUBLE_FREE)152 - Run the same PoC on patched 22621.yyyy, no anomalies at all153 → reproduction successful154```155156### Scenario 2: Linux Kernel LTS Branch Patch — Find Unfixed Side Branches157158```text159Background: mainline 6.x already fixed an OOB write in some net subsystem160 Ubuntu 22.04 (5.15 LTS) USN has published the update161 But some OEM kernels / Azure kernels backport more slowly162 Want to confirm whether the un-updated side branch is still exploitable163164Goal: take patched/unpatched kernels, diff out the binary change for the fix commit,165 rewrite the PoC on the unpatched side branch166167Steps:1681. Pull the patched and unpatched packages:169 apt download linux-image-5.15.0-101-generic # patched170 apt download linux-image-5.15.0-100-generic # unpatched171 dpkg-deb -x linux-image-5.15.0-101-generic_*.deb ./patched/172 dpkg-deb -x linux-image-5.15.0-100-generic_*.deb ./unpatched/173 Extract boot/vmlinuz → restore the ELF with extract-vmlinux1741752. Fetch the matching dbgsym:176 apt download linux-image-unsigned-5.15.0-101-generic-dbgsym1771783. Use ghidriff (Linux-friendly):179 ghidriff vmlinux_5.15.0-100 vmlinux_5.15.0-101 \180 -o /tmp/kdiff/ --max-section-funcs-analyze 80001811824. Search the report for changed functions in net/ipv4/ net/ipv6/ net/sched/ and other subsystems183 Find that pre-patch, the skb_copy_bits call lacked an upper-bound check on skb->len184 → OOB read, potentially escalatable to OOB write with a triggerable sysctl1851865. On the unpatched side branch (e.g., an Azure 5.15.0-1080 version lagging on backports)187 cross-verify: has the fix for the same function already been backported?188 If not → the side branch is still exploitable → write a PoC replay1891906. Write the PoC: adapt a syzkaller harness / a direct C PoC triggering the corresponding syscall191 Verify the side branch panics / KASAN reports OOB192```193194## Notes195196- **Legal boundaries** — weaponizing an N-day must stay within authorized scope (SRC / bug bounty / your own lab machines / CTF). Hitting production environments directly with a 1-day is tantamount to intrusion197- **A patch may only "shrink the blast radius"** — seeing a patch does not mean it is a complete fix; it may only close one exploitation path while the original bug is still reachable via other paths (one bug, many meals)198- **Do not be fooled by variable names/types** — Windows patches often do cleanup / renames along the way, which look like big changes but are actually irrelevant. Look at control flow and data flow, not token-level diffs199- **A Microsoft patch may add a mitigation rather than a fix** — CFG hardening like `_guard_xfg_dispatch_icall_fptr` is not a fix, it is a mitigation200- **Anonymization** — when publishing write-ups / PoCs, sanitize target machine names, intranet IPs, and usernames (use `{target_ip}` `{username}` placeholders)201- **The patched version must pass a harmless test** — do not run only on unpatched; otherwise the crash may be environmental, not the vulnerability202- **Binary diffing is not omnipotent** — compiler upgrades / optimization-level changes also reshuffle function layouts; first compare version N against N-1 (same compiler), do not cross major versions203204---205206## On-Demand Bootstrap207208### Tool Dependencies209210| Tool | Purpose | Auto-installable |211|------|------|-----------|212| BinDiff (Google, 5.x+) | Function-level binary diff, IDA/Ghidra plugin | ✓ (official .deb / .msi) |213| Diaphora | Established IDA diff plugin, requires IDA Pro | ✓ (git clone) |214| ghidriff | Ghidra headless CLI diff, markdown output | ✓ (pip install ghidriff) |215| DeepDiff (commercial) | Next-gen diff tool, higher accuracy | ✗ (commercial license) |216| Ghidra | Runtime base for ghidriff | ✓ |217| IDA Pro | Runtime base for BinDiff / Diaphora | ✗ (commercial) |218| Microsoft Update Catalog | Download MSU/MSP patch packages | Online service |219| wsuspect-proxy | Transparently intercept Windows Update traffic to grab patches | ✓ (git clone) |220| expand.exe / dism | Unpack MSU / cab | ✓ (Windows built-in) |221| rpm2cpio / dpkg-deb | Unpack Linux distro packages | ✓ |222| symchk | Pull PDBs from the Microsoft symbol server | ✓ (Windows SDK) |223224### Bootstrap Command225226```powershell227powershell -NoProfile -ExecutionPolicy Bypass -File "<SKILL_ROOT>\skills\scripts\bootstrap-reverse.ps1" -Capability @('bindiff','ghidriff','ghidra','wsuspect-proxy') -StartServices228```229230For detailed tool comparison and commands, see `references/diff-tools-comparison.md`.231For the detailed Patch Tuesday workflow, see `references/patch-tuesday-workflow.md`.232For root-cause back-inference and PoC templates, see `references/root-cause-and-poc.md`.233234---235236## Routing Context237238**Upstream entry points**: `skills/SKILL.md` (master control), `routing.md`239240**Upstream skills**:241- `reverse-engineering/` — you may need to understand the target binary's overall structure before diffing242- `binary-diff/` — if the post-patch version has no symbols but the pre-patch version does, first use binary-diff to carry the symbols over243244**Downstream skills**:245- `pwn-chain/` — after inferring the bug class, a complete exploit is needed (heap spray, ROP, SMEP/SMAP bypass, privilege escalation payload)246- `pentest-tools/network-attack-defense/` — weaponize and deploy the N-day onto the target network (package as a deliverable payload, integrate with C2)247- `attack-chain/` — chain this N-day into a complete attack chain (initial access → privilege escalation → lateral movement)248249**Trigger conditions**: the task includes intents like "N-day", "patch", "CVE reproduction", "find what the patch fixed", "hit unupdated hosts"250251## Task Completion Self-Check (MUST pass before claiming completion)252253- [ ] Did I execute every step of the workflow (rather than just reading it)?254- [ ] Did I use real tool paths based on `tool-index`?255- [ ] Did I produce reproducible evidence (commands/scripts/screenshots/reports)?256- [ ] Did I complete and write back the Checklist items required by RULES?