Skip to content
Back to skills

Windbg Ttd

ASecurity

WinDbg workflows for RE and driver research: KDNET kernel debugging setup, symbol discipline, crash-dump triage (!analyze, bugcheck semantics incl. PatchGuard 0x109), driver debugging (breakpoints on load, IRP/device trees), live kernel inspection, TTD (Time Travel Debugging) when WinDbgX is available, and cdb automation. Local: classic suite at Windows Kits\\10\\Debuggers\\x64 (windbg/cdb/kd/ntsd).

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 17, 2026
toolsgodebugging

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 17, 2026

npx -y skills add NetVar1337/agent-skill-canon --skill windbg-ttd --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Windbg Ttd?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Windbg Ttd
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/netvar1337-windbg-ttd/badge)](https://www.skillsdirectory.com/skills/netvar1337-windbg-ttd)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: windbg-ttd
description: "WinDbg workflows for RE and driver research: KDNET kernel debugging setup, symbol discipline, crash-dump triage (!analyze, bugcheck semantics incl. PatchGuard 0x109), driver debugging (breakpoints on load, IRP/device trees), live kernel inspection, TTD (Time Travel Debugging) when WinDbgX is available, and cdb automation. Local: classic suite at Windows Kits\\10\\Debuggers\\x64 (windbg/cdb/kd/ntsd)."
version: 1.0.0
license: GPL-3.0-or-later
metadata:
  package: unleash-skills
  author: NetVar1337/unleash
  category: re
  triggers:
    - "windbg"
    - "kdnet"
    - "kernel debugging"
    - "time travel"
    - "ttd"
    - "crash dump"
    - "bugcheck"
---

# WinDbg & TTD

Local reality (verified): classic debuggers at
`C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\` — `windbg.exe`,
`cdb.exe`, `kd.exe`, `ntsd.exe`. WinDbgX (Store) is **not** installed —
TTD and JS scripting need it: `winget install Microsoft.WinDbg`.
Put the directory on PATH for the session or call by full path.

## Symbols (do this first, every box)

```
set _NT_SYMBOL_PATH=srv*C:\symbols*https://msdl.microsoft.com/download/symbols
```

`.symfix; .reload` in-session. Unresolved `nt!` symbols = everything after
this is guessing. For third-party drivers: private PDBs when you have them,
else `!dh`/raw disassembly (see `ida-reverse` for the deep static pass).

## KDNET kernel debugging (VM or 2nd box)

Target (admin):
```
bcdedit /debug on
bcdedit /dbgsettings net hostip:<debugger-ip> port:50000 key:<1.2.3.bugkey>
```
Debugger: `windbg -k net:port=50000,key=<same key>,target=<target-ip>`.
Break at boot with `bcdedit /bootdebug on` (bootmgr) when driver init is the
target. VMs: Hyper-V/KVM both carry KDNET fine; attach KDNET *before*
loading test drivers (see the bring-up loops in `kernel-dev`,
`stealth-hypervisor`).

## Command economy

| Question | Command |
|---|---|
| What crashed | `!analyze -v` |
| Context of current thread | `.thread` / `!thread`, `k`, `kv` (frame pointers), `ub` (before-fault disasm) |
| Process context switch | `!process 0 0` → `.process /i <eproc>` (invasive) / `/p` (non-invasive) |
| Driver loaded where | `lm t n`, `!drvobj <drv> 7`, `!devobj`, `!devstack` |
| IRP story | `!irpfind`, `!irp <addr>` |
| Pool forensics | `!pool <addr>`, `!poolused 2`, `!poolfind <tag>` |
| Memory/PTE | `!address <addr>`, `!pte <addr>`, `!vad` |
| Object manager | `!object \Device`, `!handle <addr> f` |
| Break on driver load | `sxe ld:mydriver.sys` then `bu mydriver!DriverEntry` |
| Data access break | `ba r4 <addr>` (hardware bp — survives where `bp` code patches would be seen) |
| Search physical/virtual | `s -a 0 L?7fffffff "pattern"` / `!search` on dumps |

`bp` on module!symbol before load → use `bu` (deferred). Set
`.reload /f mydriver.sys` after load if symbols lag.

## Crash dump triage (driver dev loop)

1. Configure: `Sysdm.cpl → Startup and Recovery → Kernel/Complete dump` +
   keyboard-initiated crash (Ctrl-ScrollLock registry) for *deliberate* trips.
2. Open: `windbg -z C:\Windows\MEMORY.DMP` → `.symfix; .reload; !analyze -v`.
3. Read the bugcheck like an engineer:

| Code | Meaning for your work |
|---|---|
| `0x109` CRITICAL_STRUCTURE_CORRUPTION | PatchGuard caught a modification — identifies *what* (`Parameter 1/4` type) → your SSDT/IDT/MSR/static-hook just failed; PG does **not** catch callback-array DKOM (see `kernel-callbacks`) |
| `0x50` / `0xA` | bad memory ref at IRQL — usually a dangling pointer/IRQL violation in your driver |
| `0x7E` | unhandled exception in driver |
| `0x133` DPC_WATCHDOG_VIOLATION | DPC >100 µs: your DPC loops; also seen when spinlock-held too long |
| `0x1A` MEMORY_MANAGEMENT | pool corruption — enable Driver Verifier special pool and reproduce |
| `0x124` WHEA | hardware/hypervisor instability — suspect your VMX code before the hardware |

4. Driver Verifier on the target driver (`verifier /standard /driver
   mydrv.sys`): special pool catches overflows at the *allocation*, not the
   crash — most kernel 0-day candidates surface here (`windows-driver-0day`
   flow).
5. Second-chance discipline: on a live KDNET box you rarely need dumps —
   break in (`Ctrl+Break`), inspect live state, continue.

## TTD (Time Travel Debugging) — usermode

TTD records an execution trace you can run **backwards** (`g-`, `p-`, `t-`) —
the killer feature for: anti-debug logic (set bp on the *result* of the check
and walk back to the branch), races (replay the exact interleaving),
corrupted-then-crashed buffers (watch the write that corrupted it:
`ba w4 <addr>` then `g-`).

- Requires WinDbgX: `winget install Microsoft.WinDbg` (TTD engine ships with
  it). cdb classic does not record TTD.
- Record: launch under WinDbgX → `tt record`-style via the UI/`bptrace`;
  heavy — cap the scenario (small repro, narrow window).
- Replay: `windbgx -z trace.run` → `!tt 0`, `g-`, watch `time-travel` menu
  travel (positions `2:3` style), `dx -g $tt` for timeline queries.
- TTD + `ba w4` → backward data-watchpoint is the single highest-value RE
  primitive in this skill. If you catch yourself bisecting a corruption
  manually, you skipped this.

Kernel TTD: not available — the closest analog is a scripted KDNET session
(`cdb -c "...; q"` chains) plus ETW correlation.

## Automation

```
cdb -z dump.dmp -c ".symfix; .reload; !analyze -v; q"
cdb -g -G target.exe -c "bu *server!dispatch; g; k; qd"     // scripted usermode
kd -k net:port=50000,key:... -c "lm t n; q"                  // headless kernel recon
```
Log with `-logo session.log`; scripts via `-cf file.txt`. Batch triage of a
dump corpus becomes a one-liner per file.

## Pitfalls

- Wrong-bit debugger (x86 cdb on x64 target) — pick `Debuggers\x64`.
- Symbols stale after a Windows update: `.reload /f nt` — caches lie across
  build bumps; verify with `lm t n` module timestamps vs target build.
- KDNET behind DHCP changes: hostip changes break the target's settings —
  re-run `bcdedit /dbgsettings`.
- Dump-only sessions can't `ba` (no execution) — data watchpoints need live
  KDNET or TTD.
- VM snapshots + KDNET: resume-from-snapshot sometimes drops the pipe —
  restart the debuggee, not the debugger.

## Pair with

`kernel-dev` / `driver-comm` (what you're debugging), `kernel-callbacks`
(bugcheck-0x109 triage), `windows-driver-0day` (verifier-driven hunting),
`pwndbg-dynamic-analysis` (Linux-side counterpart), `debugger` (general
debugger theory), `frida-dbi` (usermode dynamic counterpart).

Files in this skill

  • SKILL.md6.4 KB
  • agents/openai.yaml43 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.