<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Windows on Prepakis Georgios | Kernelstub | Security Researcher</title><link>https://blog.kernelstub.dev/tags/windows/</link><description>Recent content in Windows on Prepakis Georgios | Kernelstub | Security Researcher</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Mon, 10 Mar 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.kernelstub.dev/tags/windows/index.xml" rel="self" type="application/rss+xml"/><item><title>Advanced Windows Kernel Debugging Techniques</title><link>https://blog.kernelstub.dev/posts/advanced-windows-kernel-debugging-techniques/</link><pubDate>Mon, 10 Mar 2025 00:00:00 +0000</pubDate><guid>https://blog.kernelstub.dev/posts/advanced-windows-kernel-debugging-techniques/</guid><description>&lt;p&gt;Kernel debugging is a different animal from the user-mode debugging most developers grow up with. You can&amp;rsquo;t just attach a debugger to a live kernel the way you&amp;rsquo;d attach to a misbehaving process, because the kernel is the thing that&amp;rsquo;s supposed to be managing every process on the box, including the debugger&amp;rsquo;s own. If it halts, everything halts. So Windows solves this the old-fashioned way: two machines. One is the &amp;ldquo;target,&amp;rdquo; the system whose kernel you actually want to inspect. The other is the &amp;ldquo;host,&amp;rdquo; running WinDbg, connected over a transport that survives the target being frozen mid-instruction: a network link, a serial cable, or USB. When you set a breakpoint and it hits, the &lt;em&gt;entire target machine&lt;/em&gt; stops, not just one process, and control passes to your host over that wire. That&amp;rsquo;s the mental model to keep in the back of your head for everything that follows: you&amp;rsquo;re not debugging a program, you&amp;rsquo;re debugging an operating system from the outside, one machine talking to another.&lt;/p&gt;</description></item><item><title>Introduction to Windows Syscalls</title><link>https://blog.kernelstub.dev/posts/introduction-to-windows-syscalls/</link><pubDate>Tue, 17 Sep 2024 00:00:00 +0000</pubDate><guid>https://blog.kernelstub.dev/posts/introduction-to-windows-syscalls/</guid><description>&lt;h2 id="what-are-system-calls-really"&gt;What Are System Calls, Really?&lt;/h2&gt;
&lt;p&gt;Every time your program does something that touches the outside world, opening a file, allocating memory, talking to the network, waiting on another thread, it&amp;rsquo;s asking the operating system to do that work on its behalf. Your program doesn&amp;rsquo;t get to poke the disk controller or the network card directly. It can&amp;rsquo;t, by design. The CPU itself enforces this separation through privilege rings: user-mode code (ring 3 on x86/x64) runs with a restricted set of permissions, while the kernel (ring 0) runs with full access to hardware and memory. A system call is the formal, controlled doorway between those two worlds.&lt;/p&gt;</description></item></channel></rss>