>_dkom.dev
posts courses about rss spor ↗

# internals

  • 2025.11.24 Finding unexported kernel symbols without a symbol server

    A pattern scanner maps a PE as a section image, scans for a unique byte sequence with a wildcard mask, and decodes the RIP-relative displacement to recover the symbol …

    windowskernelinternalsreversing
  • 2025.07.28 [Hypervisor Part 2] Hijacking Hyper-V's VM-Exit Handler from Inside the Guest

    How the hypervisor detours Hyper-V’s VM-exit handler, the CPUID-based hypercall ABI including the bitfield bug that burned me, and how we resolve arbitrary process …

    windowskernelhypervisorinternalsevasion
  • 2025.06.23 [Hypervisor Part 1] What a Hypervisor Actually Does (And Why Your Ring-0 Code Should Care)

    A ground-up explanation of what hypervisors do at the CPU level, how Windows runs under Hyper-V by default, what a VM-exit is and when it happens, and why this matters …

    windowskernelhypervisorinternals
  • 2025.05.12 Kernel UDP socket server via WSK: covert comms with no IOCTL surface

    WSK lets a kernel driver bind a UDP socket and communicate with user mode without a device object, symbolic link, or IOCTL dispatch table. EnumDeviceObjects and …

    windowskerneldriversevasioninternals
  • 2025.04.07 Binary-searching your payload: how AV signatures work and how to find them

    Defender flags your file but won’t tell you why. Binary search the file to isolate the triggering bytes, then read what those bytes are to understand what kind of …

    windowsmalwarereversinginternals
  • 2025.02.24 Self-deleting executables: NTFS alternate data streams and POSIX semantics

    How a running process can erase its own executable from disk using NTFS ADS renaming and FILE_DISPOSITION_FLAG_POSIX_SEMANTICS, and what forensic traces survive.

    windowsinternalsevasionmalware
  • 2025.01.20 Anti-debug techniques and the telemetry each one generates

    Ten anti-debug checks paired with the exact ETW providers, Sysmon event IDs, and forensic artifacts each one leaves behind – a reference for both sides of the …

    windowsinternalsmalwareevasion
  • 2024.12.09 Finding EPROCESS from the GS register

    Most kernel code that needs a process structure starts from PsInitialSystemProcess or PsActiveProcessHead – both exported symbols. If the export table is …

    windowskernelinternalsdrivers
  • 2024.11.04 The four callbacks an EDR kernel driver uses

    PsSetCreateProcessNotifyRoutineEx, PsSetCreateThreadNotifyRoutine, PsSetLoadImageNotifyRoutine, and ObRegisterCallbacks: what each one gives you, what it misses, and how …

    windowskerneldriversinternals
  • 2024.08.19 Thread start address inspection: how EDR kernel drivers catch shellcode

    PsSetCreateThreadNotifyRoutine fires for every new thread. This post shows how an EDR kernel driver turns that callback into a start-address inspection pipeline, what the …

    windowskerneldriversinternalsevasion
  • 2024.06.10 Handle stripping: how EDR kernel drivers protect their own process

    ObRegisterCallbacks lets a kernel driver intercept every handle open before it completes. EDRs use this to strip dangerous access bits from any handle targeting their own …

    windowskerneldriversinternals
  • 2024.03.25 Threadless injection: process execution without creating a thread

    Every classic injection technique creates a thread. Threadless injection installs a 5-byte CALL trampoline on an existing function and hijacks the next thread that calls …

    windowsinternalsinjectionevasionmalware
  • 2024.01.08 MapViewOfFile2: process injection without WriteProcessMemory

    MapViewOfFile2 maps a section object directly into a foreign process without ever calling WriteProcessMemory, removing the cross-process write primitive that most EDR …

    windowsinternalsinjectionevasionmalware
  • 2023.10.16 Function stomping: injecting into DLL text instead of heap memory

    Classic shellcode injection allocates a private RWX page that every VAD-walking scanner flags. Function stomping overwrites an existing DLL export and executes from …

    windowsinternalsinjectionevasionmalware
  • 2023.07.31 Process Injection Without the Obvious Thread: Early Bird APC and Beyond

    Why CreateRemoteThread+LoadLibraryA is immediately detectable, how Early Bird APC avoids the worst of the telemetry, and the injection techniques that push further into …

    windowsmalwareinjectionevasioninternals
  • 2023.05.08 Fingerprinting anti-cheat by its pool allocation pattern

    BattleEye resolves ExAllocatePool at runtime via MmGetSystemRoutineAddress. Intercept that resolution and you can gate every pool allocation BE makes – returning …

    windowskernelanticheatinternalsdrivers
  • 2023.02.20 Intercepting BattleEye's ObRegisterCallbacks at registration time

    Removing BattleEye’s object callbacks is detectable. Intercepting the registration itself lets you subvert the callback’s effect while leaving it fully …

    windowskernelanticheatdriversinternals
  • 2021.11.22 Code caves in signed kernel drivers

    Unsigned executable memory in the kernel is an immediate red flag. Shellcode placed in the padding bytes of a legitimate signed Microsoft driver executes inside that …

    windowskerneldriversevasioninternals
  • 2021.08.30 MmCopyVirtualMemory: used everywhere, documented nowhere

    MmCopyVirtualMemory is the undocumented kernel export behind nearly every kernel cheat and rootkit doing cross-process memory reads, but its actual behaviour – …

    windowskernelinternalsmemory
  • 2021.05.17 Writing an x64 Inline Hook by Hand (Without Reaching for MinHook)

    How x64 inline hooks actually work, when to use a 5-byte relative jump versus a 14-byte absolute trampoline, why displaced instructions break when you copy them naively, …

    windowsreversinghookinginternalsmalware
  • 2020.09.14 NtLoadDriver vs SCM: what each leaves behind

    Creating a service through SCM and calling NtLoadDriver directly leave different artifacts. Knowing exactly what each approach leaves – event log entries, registry …

    windowskerneldriversinternalsevasion
© 2026 Emil Sørbrøden / built with Hugo /rss