How sam-b/windows_kernel_address_leaks works
This repository is a collection of standalone Windows user-mode demonstrations for disclosing kernel-related addresses and pointers, rather than one integrated application. The principal workflow is to run a technique-specific executable, obtain information through a Windows interface or shared user-mode structures, and print the resulting addresses; the triage-dump example instead writes a dump file. README-listed techniques are retained as separate branches. Several implementations are represented from the README and tree because their source was not excerpted, so their internal calls are not inferred.
Main entry points: NtSystemDebugControl_SysDbgGetTriageDump.cpp Triage Dump · NtQuerySysInfo_SystemHandleInformation.cpp Handle Info · NtQuerySysInfo_SystemLockInformation.cpp Lock Info · NtQuerySysInfo_SystemModuleInformation.cpp Module Info
Components 16
System Information
- Handle Info
NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation.cpp - Lock Info
NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation.cpp - Module Info
NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation.cpp - Process Info
NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation.cpp - Big Pool Info
NtQuerySysInfo_SystemBigPoolInformation/NtQuerySysInfo_SystemBigPoolInformation/NtQuerySysInfo_SystemBigPoolInformation.cpp - Firmware Table
NtQuerySysInfo_SystemFirmwareTableInfo/NtQuerySysInfo_SystemFirmwareTableInfo/NtQuerySysInfo_SystemFirmwareTableInfo.cpp - Syscall Returns
Syscalls/Syscalls/Syscalls.cpp
Win32k Techniques
- Shared Info Table
SharedInfoHandleTable/SharedInfoHandleTable/SharedInfoHandleTable.cpp - HMValidateHandle
HMValidateHandle/HMValidateHandle/HMValidateHandle.cpp - GDI Handle Table
GdiSharedHandleTable/GdiSharedHandleTable/GdiSharedHandleTable.cpp - Desktop Heap
DesktopHeap/DesktopHeap/DesktopHeap.cpp
Privileged Debug
- Triage Dump
NtSystemDebugControl_SysDbgGetTriageDump/NtSystemDebugControl_SysDbgGetTriageDump/NtSystemDebugControl_SysDbgGetTriageDump.cpp
CPU Structures
- Descriptor Tables
DescriptorTables/DescriptorTables/DescriptorTables.cpp
Other components
- User
- Windows NT APIs
- Dump File
Connections 21
- User → Handle Info: runs demo
README.md - User → Lock Info: runs demo
README.md - User → Module Info: runs demo
README.md - User → Process Info: runs demo
README.md - User → Big Pool Info: runs demo
README.md - User → Firmware Table: runs demo
- User → Syscall Returns: runs demo
README.md - User → Shared Info Table: runs demo
README.md - User → HMValidateHandle: runs demo
README.md - User → GDI Handle Table: runs demo
README.md - User → Desktop Heap: runs demo
README.md - User → Triage Dump: runs demo
README.md - User → Descriptor Tables: runs demo
README.md - Handle Info → Windows NT APIs: queries handles
NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation/NtQuerySysInfo_SystemHandleInformation.cpp - Lock Info → Windows NT APIs: queries locks
NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation/NtQuerySysInfo_SystemLockInformation.cpp - Module Info → Windows NT APIs: queries modules
NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation/NtQuerySysInfo_SystemModuleInformation.cpp - Process Info → Windows NT APIs: queries processes
NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation/NtQuerySysInfo_SystemProcessInformation.cpp - Big Pool Info → Windows NT APIs: queries pool
NtQuerySysInfo_SystemBigPoolInformation/NtQuerySysInfo_SystemBigPoolInformation/NtQuerySysInfo_SystemBigPoolInformation.cpp - Firmware Table → Windows NT APIs: queries firmware
NtQuerySysInfo_SystemFirmwareTableInfo/NtQuerySysInfo_SystemFirmwareTableInfo/NtQuerySysInfo_SystemFirmwareTableInfo.cpp - Triage Dump → Windows NT APIs: requests triage dump
NtSystemDebugControl_SysDbgGetTriageDump/NtSystemDebugControl_SysDbgGetTriageDump/NtSystemDebugControl_SysDbgGetTriageDump.cpp - Triage Dump → Dump File: writes dump
NtSystemDebugControl_SysDbgGetTriageDump/NtSystemDebugControl_SysDbgGetTriageDump/NtSystemDebugControl_SysDbgGetTriageDump.cpp