ntoseye

ntoseye is a Windows debugger for Linux and macOS. It debugs the Windows kernel and user-mode processes of virtual and physical machines, and analyzes crash dumps offline, with the command language of WinDbg.

Debugging via REPL

Debugging via VS Code + DAP

The ntoseye REPL

ntoseye in VS Code

ntoseye is available under the MIT license.

Using ntoseye

New to ntoseye? Install it, attach to a VM with the Quickstart, then follow Your first session from attaching to stepping. If you already know WinDbg, Coming from WinDbg lists what carries over and what differs.

Every REPL command is documented in the command reference, which is the same text .hh <command> prints. To drive the debugger from code, start with the Python SDK.

Debugging from the host

ntoseye runs outside the machine it debugs and reaches it through one of four backends:

Backend

Connects over

Needs in Windows

Stops and steps

kd

KDCOM, on a VM serial port

Kernel debugging

Yes

kdnet

KDNET, on the network

Kernel network debugging

Yes

gdb

The hypervisor’s GDB stub

Nothing

Yes

memory

The VM’s memory

Nothing

No

KDNET reaches any machine Windows can debug, physical or virtual. With gdb and memory, Windows runs without its debugger enabled and does not know it is being debugged. With a VM on the same host, ntoseye reads guest memory straight from the VM process whenever it can, instead of through the debugger transport. Choosing a backend compares the backends in full.

Because it reads memory itself, ntoseye also sees what Windows’ own debugger cannot: the secure kernel and trustlets that virtualization-based security isolates in VTL1, and where each processor left off when it stopped inside the Windows hypervisor.

Symbols and source

Symbols come from Microsoft’s symbol server, into a cache in the symstore layout that WinDbg, IDA, and Ghidra also read. Private PDBs and local source add source lines, local variables, and source breakpoints for your own drivers, and driver replacement loads a rebuilt driver from the host without copying it into the guest.

Platform support

ntoseye debugs 64-bit Windows 10 and 11 on AMD64 and ARM64, live or from a crash dump, and runs on Linux (x86-64, ARM64) and macOS on Apple Silicon. It sets up and works directly with KVM/QEMU and VMware Workstation on Linux and UTM on macOS; any other machine, physical or virtual, is reached over KDNET.

Get involved

The source is on GitHub. It builds with Cargo:

git clone https://github.com/dmaivel/ntoseye.git
cd ntoseye
cargo build --release

Report bugs on the issue tracker, and ask questions or share what you have built in Discussions.