防护思路
点击放大


This project demonstrates the use of a custom keyboard dri in kernel mode with a built-in UDP protocol under 30 kB. After successful installation, operation with:
Expected Output (Fully Operational):
Alternati: use the companion KVC tool – a separate project that can load an unsigned kernel dri reboot in any protection mode (including Secure Boot). Note: the user must update the K (including the offset map in OffsetFinder.cpp) before use.
| Component | Type | Pri Level | Primary Function |
|-----------|------|----------------|------------------|
| kvckbd.sys | Kernel Filter Driver | Ring 0 | IRP-le interception, scan code processing, WSK networking |
| ExplorerFrame.dll | COM In-Process Server | Ring 3 (User) | CLSID hijacking for persistence, API hooking for watermark removal |
| UdpLogger.exe | Service Manager | Ring 3 (TI/Admin) | Installation orchestration, UDP logging, system status monitoring |
Kernel Space (Ring 0):
User Space (Ring 3):
Persistence Layer:
Pre-Installation Check (SystemStatus.cpp:91-104)
Before any installation steps, the system checks if Secure Boot is enabled:
Installation Blocking (UdpLogger.cpp:216-234)
If Secure Boot is detected, installation terminates immediately with error message:
Why This Matters:
Filter Dri:
Rather than implementing a complete keyboard dri, kvckbd.sys adopts the filter dri. It positions itself between user-mode applications and the legitimate Windows keyboard driver, allowing it to observe and process all keyboard input without replacing core system functionality.
Key Inno - Modern IRP-Based Implementation – Tested on Windows 11 25H2:
This dri a rare working implementation of IRP-based keyboard filtering. Most modern attempts fail due to:
This project solves all these challenges through careful architecture-specific offset management, proper IRQL-aware synchronization, and comprehensi handling.
De Offset Technique:
The dri accesses internal structures of kbdclass.sys by using architecture-specific offsets into the De. This technique is necessary because Microsoft doesn't expose these structures publicly:
| Structure | x86 Offset | x64 Offset | Purpose |
|-----------|------------|------------|---------|
| IO_REMO | 0x10 | 0x20 | Prevents device remo operations |
| KSPIN_LOCK | 0x6C | 0xA0 | Synchronizes access to IRP queue |
| LIST_ENTRY | 0x70 | 0xA8 | Head of pending read IRP queue |
IRP Queue Manipulation:
The dri pending IRPs directly from kbdclass.sys's internal queue, processes them, then forwards them to the original handler. This requires:
Thread-Based Processing:
Each intercepted IRP spawns a dedicated system thread. This design:
Multi-Table Translation System:
The dri an efficient scan code translation engine using multiple lookup tables:
State Machine Implementation:
The dri keyboard state flags (Shift, CapsLock, NumLock) and implements XOR logic for proper character output. For letters:
Performance Optimization:
Instead of storing all combinations (84 × 4 = 336 entries), the dri at runtime, reducing memory footprint to ~1KB for all translation tables while maintaining O(1) lookup complexity.
Design Rationale:
Traditional keystroke loggers send one network packet per key press, generating excessi. This dri line-based buffering:
Performance Impact:
Synchronization:
The buffer uses KSPIN_LOCK for protection since it's accessed at DISPATCH_LEVEL. Spinlocks are mandatory here (mutexes would cause BSOD at DISPATCH_LEVEL).
Kernel-Mode Networking:
The driver uses Winsock Kernel (WSK) for UDP communication. WSK ad:
Initialization Process:
1. Start WSK subsystem (WSKStartup)
2. Resol address (supports both IPv4/IPv6)
3. Create datagram socket (WSKSocket with SOCK_DGRAM)
4. Configure default destination DDRESS ioctl
UDP Transmission:
Calls WSKSendTo with pre-configured socket. No need to specify destination address on each call since SIO_WSK_SET_SENDTO_ADDRESS sets a default target.
Initialization Thread:
A persistent system thread (KbdThread_IrpHookInit) runs continuously:
Clean Unload Process:
Unloading a filter driver is notoriously difficult. This dri:
1. Signal shutdown: Set IsUnloading flag
2. Unhook devices: Restore original De pointers
3. Wait for safety: Poll SafeUnload flag on each keyboard object
4. Flush buffers: Send any remaining buffered keystrokes
5. Release resources: Close sockets, delete resources, free pool memory
6. Delete device: Remo device object
Critical Safety Mechanism:
The SafeUnload flag prevents premature unload while IRPs are still processing. Each keyboard object tracks whether it's safe to cleanup, pre BSOD during unload.
Target CLSID:
Mechanism:
When Windows Explorer (explorer.exe) starts, it loads numerous COM components. By hijacking the InProcServer32 registry value for a specific CLSID, we can inject our DLL into Explorer's address space automatically at every system boot.
Registry Manipulation:
HKCR\CLSID\{...}\InProcServer32 = %SystemRoot%\system32\ExplorerFrame.dllHKCR\CLSID\{...}\InProcServer32 = %SystemRoot%\system32\ExpIorerFrame.dllStealth Through Typosquatting:
The filename uses similarity:
ExplorerFrame.dll (legitimate, uses lowercase 'l')ExpIorerFrame.dll (malicious, uses uppercase 'I')In many fonts, 'l' and 'I' are nearly indistinguishable, making casual file listing appear normal.
Persistence Characteristics:
Objective:
Remove "Test Mode" watermark displayed by Windows when test signing is enabled. The watermark is rendered by shell32.dll using LoadStringW and ExtTextOutW API calls.
Hooking Technique:
The DLL implements IAT patching to redirect API calls:
1. Locate IAT: Parse PE headers of shell32.dll in memory
2. Find import entries: Scan import directory for LoadStringW and ExtTextOutW
3. Modify function pointers: Replace original addresses with proxy functions
4. : Temporarily disable page protection to write
Proxy Functions:
String Detection:
The DLL maintains a list of watermark strings:
If detected in text output calls, the function returns success without actually drawing.
Initialization Timing:
Hooking occurs in DllMain during DLL_PROCESS_ATTACH, ensuring it activates before Explorer renders any UI elements.
Design Philosophy:
The DLL is built with aggressive size optimization:
Binary Size:
Through these optimizations, the compiled DLL is extremely small (~7 KB), making it less suspicious and easier to hide.
Function Forwarding:
The DLL exports two functions that forward to the legitimate explorerframe.dll:
This ensures COM functionality remains intact while injection occurs transparently.
1. Installer - Deploys and configures all components with TrustedInstaller pri
2. Service - Runs as Windows Service to receive and log UDP keystroke data
3. Manager - Provides CLI for controlling driver and service states
4. Monitor - Comprehensi status checking and diagnostics
This component demonstrates ad Windows service programming, pri escalation techniques, and secure resource embedding.
Why TrustedInstaller?
Windows protects critical system files and registry keys using TrustedInstaller ownership. Standard Administrator pri cannot:
Escalation Chain:
Key Techniques:
1. SYSTEM Acquisition:
- Locates winlogon.exe process (always runs as SYSTEM)
- Opens process with PROCESS_QUERY_INFORMATION
- Duplicates token with SecurityImpersonation level
2. TrustedInstaller Service:
- Service name: "TrustedInstaller"
- Start type: Manual (must be started explicitly)
- Monitors service state until SER
- Acquires process token once running
3. Pri Enablement:
- Enables all 8 critical pri on token:
- SeDebugPri - Debug any process
- SeImpersonatePri - Impersonate tokens
- SeAssignPrimaryTokenPri - Assign tokens to processes
- SeTcbPri - Trusted Computer Base
- SeBackupPri - Backup files
- SeRestorePri - Restore files
- SeTakeOwnershipPri - Take ownership of objects
- SeSecurityPri - Manage audit/security logs
4. Impersonation Context:
- All file/registry operations occur within ImpersonateLoggedOnUser context
- Operations use impersonated credentials automatically
- Re() called after each operation batch
Embedding Method:
The final UdpLogger.exe embeds both kvckbd.sys and ExpIorerFrame.dll using steganography with CAB compression, achieving exceptional size efficiency (~18 KB total).
Structure:
Encryption:
Files are XOR-encrypted with a 7-byte key before CAB compression:
Extraction Process (ResourceExtractor.cpp):
Stage 1: Resource Loading (Lines 269-283)
Stage 2: Icon Skipping (Lines 285-292)
Stage 3: XOR Decryption (Lines 294-295)
Stage 4: In-Memory CAB Decompression (Lines 123-183)
Uses Windows FDI (File Decompression Interface) API with custom callbacks:
Key implementation details:
fdi_open: Returns pointer to memory context (not file handle)fdi_read: Reads from memory buffer instead of diskfdi_write: Writes to in-memory (no filesystem I/O)fdi_seek: Adjusts memory offset pointerStage 5: PE Binary Separation (Lines 188-242)
The extracted kvc.bin contains two concatenated PE files. Parser identifies them by:
Ad:
Detection Resistance:
1. First 1662 bytes are valid ICO data - appears as normal icon
2. Remaining data looks like random noise until XOR-decrypted
3. CAB signature only after decryption
4. PE files only accessible after CAB extraction
5. No external dependencies or suspicious file downloads
The installation process requires TrustedInstaller pri to deploy files to protected system locations. The system uses sophisticated token impersonation instead of traditional pri escalation methods (takeown/icacls), achieving direct API-le without spawning external processes.
Token Escalation Chain:
Implementation Details (TrustedInstallerExecutor.cpp):
Phase 1: SYSTEM Token Acquisition (Lines 258-275)
Phase 2: TrustedInstaller Service Acti (Lines 277-321)
Phase 3: Token Extraction & Duplication (Lines 323-337)
Phase 4: Pri Enablement (Lines 155-177)
Direct Operations (No External Processes):
File Operations (Lines 443-497)
Registry Operations (Lines 570-618)
Key Operations Performed:
| Operation Type | Target Location | Purpose |
|---------------|-----------------|---------|
| File Write | %SystemRoot%\System32\ExpIorerFrame.dll | CLSID hijack DLL deployment |
| File Write | %SystemRoot%\System32\Dri\FileRepository\keyboard.inf_amd64_*\kvckbd.sys | Kernel dri |
| Registry Write | HKCR\CLSID\{ab0b37ec-56f6-4a0e-a8fd-7a8bf7c2da96}\InProcServer32 | COM hijack registration |
| Registry Write | HKLM\SYSTEM\CurrentControlSet\Services\kvckbd | Dri creation |
| Registry Write | HKLM\BCD00000000\Objects\{GUID}\Elements\16000049 | BCD test signing enable |
| File Delete | Protected system files | Uninstall cleanup |
Ad O Methods:
| Traditional (takeown/icacls) | TrustedInstaller Token Impersonation |
|------------------------------|-------------------------------------|
| takeown.exe /F file | Direct Win32 API call |
| icacls.exe file /grant | Single token impersonation |
| 3-5 cmd.exe processes per file | No child processes spawned |
| 5-10 seconds per operation | Milliseconds per operation |
| in Process Explorer | Appears as normal system activity |
| EDR process chain detection | Single-thread operation |
| Console window flashing | Silent API-le |
Security Context:
Service Architecture:
The program implements a dual-mode design:
UdpLogger --service (called by SCM)Service Lifecycle:
Worker Thread:
Runs continuously while service is active:
UDP Listener:
Log File Naming:
Rotation Logic:
At midnight, the logger:
1. Writes footer to current file (session duration summary)
2. Closes file handle
3. Opens new file with today's date
4. Writes header to new file
Header Format:
Entry Format:
Footer Format:
!Keyboard Log Example
Log Rotation:
New file created automatically at midnight...
Component :
The UdpLogger status command performs comprehensi:
1. Windows Service Status:
- Opens SCM (Service Control Manager)
- Queries service state
- Checks if running
2. Kernel Dri:
- Queries kvckbd service
- SER state
- Indicates if driver is loaded in kernel
3. CLSID Hijack :
- Reads registry value with TI pri
- Checks if ExpIorerFrame.dll is registered
- against expected value
4. Test Signing Status:
- Reads BCD element 23000003 for current boot GUID
- Reads element 16000049 under boot GUID
- Checks if binary value = 0x01 (enabled)
5. File Presence Check:
- System32\ExpIorerFrame.dll exists
- Dri\...\kvckbd.sys exists
- Uses GetFileAttributes API
Output Interpretation:
Each component displays:
[+] checkmark (passing)[-] checkmark (failing)kvckbd Service Control:
The tool can start/stop/restart the kernel driver:
Restart Strategy:
1. Stop service (if running)
2. Wait 2 seconds (allows cleanup)
3. Start service
Status Query:
Reads service state and displays:
What is BCD?
Boot Configuration Data (BCD) is a firmware-independent database introduced in Windows Vista to replace boot.ini. It stores boot configuration parameters including:
Storage Location:
!BCD Registry Structure
The BCD is stored as a registry hive at:
When mounted, it appears in the registry at:
Hierarchy:
Well-Known GUID:
This is the Boot Manager GUID. It's a constant identifier for the Windows Boot Manager object.
BCD elements are identified by 8-digit hexadecimal codes:
| Element | Name | Type | Purpose |
|---------|------|------|---------|
| 23000003 | CurrentBootEntry | Pointer | GUID - Points to active boot entry |
| 16000049 | TestSigningEnabled | BINARY | Enables test-signed drivers |
| 12000004 | Description | STRING | OS description text |
| 11000001 | Device | BINARY | Boot device information |
| 26000010 | BootDebuggerEnabled | BOOLEAN | Kernel debugger status |
Purpose:
This element contains the GUID of the currently active boot configuration. When Windows boots, the boot manager uses this to determine which OS entry to load.
Data Format:
Usage in This Project:
The installer must dynamically determine which boot entry is current because:
Reading Process:
Purpose:
Controls whether Windows will load drivers signed with test certificates. When enabled, the OS displays a watermark: "Test Mode - Windows [Edition] - Build [Number]"
Data Format:
0x01 = Enabled0x00 = DisabledLocation:
Why Test Signing is Needed:
Windows enforces Dri Enforcement (DSE) on x64 systems:
Our Driver's Signature:
kvckbd.sys is signed with a test certificate (WDKTestCert Administrator, thumbprint: 7870176), requiring test mode enabled.
Step-by-Step Process:
1. Read Current Boot GUID:
- Path: HKLM\BCD00000000\Objects\{9dea862c-5cdd-4e70-acc1-f32b344d4795}\Elements\23000003
- Value Name: Element
- Result: Binary data containing GUID
2. Parse GUID:
- Convert binary to string format: {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
3. Construct Testsigning Path:
4. Create Key (if missing):
- Use RegCreateKeyExW with TrustedInstaller pri
5. Write Binary Value:
- Value Name: Element
- Type: REG_BINARY
- Data: 0x01 (single byte)
6. Reboot Required:
- Changes take effect only after system restart
The standard way to enable test signing:
However, this project uses direct registry manipulation because:
In can detect test signing via:
Output will show:
Or inspection at:
Service Control Manager (SCM) Role:
Windows doesn't load drivers directly from files. Instead:
1. Dri is registered in the registry
2. SCM reads registry at boot
3. SCM loads drivers based on Start type
4. Drivers execute from their registered ImagePath
Why Registry-Based?
Primary Key:
Required :
| Value Name | Type | Data | Purpose |
|------------|------|------|---------|
| Type | REG_DWORD | 0x00000001 | SER |
| Start | REG_DWORD | 0x00000002 | SER (loads at boot) |
| ErrorControl | REG_DWORD | 0x00000001 | SER (log error, continue boot) |
| ImagePath | REG_EXPAND_SZ | \System32\...\kvckbd.sys | Relative path to driver |
| DisplayName | REG_SZ | "kvckbd" | Human-readable name |
Value Explanations:
Type :
0x00000001 = Kernel-mode driver0x00000002 = File system driver0x00000010 = Win32 serviceStart :
0x00000000 = Boot (loads by boot loader)0x00000001 = System (loads during kernel initialization)0x00000002 = Automatic (loads at boot)0x00000003 = Manual (must be started explicitly)0x00000004 = DisabledErrorControl :
0x00000000 = Ignore (log error, continue silently)0x00000001 = Normal (log error, display message, continue)0x00000002 = Severe (try last known good, fail boot if una)0x00000003 = Critical (must succeed or boot fails)What is Dri?
Windows maintains a protected repository of installed drivers at:
Directory Structure:
Why Dri?
Challenge:
The Dri subdirectory has a random hash suffix:
This hash per system, so we cannot hardcode the path.
Solution - Dynamic Discovery:
Installation Process:
1. Locate Dri keyboard directory
2. Copy kvckbd.sys to this directory (requires TI pri)
3. Construct relati for registry
Relative Path:
Why Relative?
Boot-Time Resolution:
At boot, Windows resol paths:
Standard API (Insufficient):
This fails because:
Our Approach - Direct Registry:
Boot Sequence:
First Boot After Installation:
1. Dri registered in registry
2. System reboots
3. Test signing enabled (BCD modified)
4. SCM loads kvckbd.sys automatically
5. Dri intercepting keyboard
Check Service Registration:
Check Registry:
Check Driver in Memory:
Or using Dri tools:
System Requirements:
Pre-Installation Checklist:
Security Boot Disable:
1. Enter BIOS/UEFI setup (usually F2, Del, F10 during boot)
2. Na to Security or Boot settings
3. Find "Secure Boot" option
4. Change to Disabled
5. Save and exit
Simple Installation:
This performs:
Automatic Reboot:
Installation Stages:
Post-Installation:
After reboot:
Comprehensi Check:
Example Output:
!UdpLogger Status Command
Indi Component Checks:
Service Status:
Dri:
Start Service:
Stop Service:
Restart Service:
Start Driver:
Stop Driver:
Restart Driver:
Note: Dri may be necessary after:
Log Location:
The service writes logs to the first writable location among:
1. %TEMP%\keyboard_log_YYYY-MM-DD.txt
2. %TMP%\keyboard_log_YYYY-MM-DD.txt
3. %USERPROFILE%\Documents\keyboard_log_YYYY-MM-DD.txt
4. Current directory
Logs:
Or open with any text editor.
Log Rotation:
New file created automatically at midnight. Old files preser (manual cleanup required).
Complete Removal:
This performs:
Post-Uninstall:
Reboot recommended (but not required). Driver and DLL will be removed at next boot if locked.
Note: Test signing remains in BCD but is disabled. To completely remove:
IRQL-Aware Design:
The dri at multiple IRQL (Interrupt Request Level) contexts:
| Context | IRQL | Allowed Operations |
|---------|------|-------------------|
| System thread | PASSI | All operations, can wait |
| IRP dispatch | ≤ DISPATCH_LEVEL | No paged memory, no blocking |
| Spinlock held | DISPATCH_LEVEL | Minimal operations only |
Synchronization Primitives Used:
1. KSPIN_LOCK (Line Buffer):
- Used at DISPATCH_LEVEL
- Fast, non-blocking
- Protects line buffer during keystroke accumulation
- Acquired/released in microseconds
2. ERESOURCE (Keyboard Objects):
- Used at PASSI
- Allows shared/exclusi
- Protects keyboard object state during IRP processing
- Can be held across function calls
3. LIST_ENTRY (Keyboard Object List):
- Interlocked operations
- Protected by spinlock
- Thread-safe insertion/removal
Pool Tags:
All allocations use KBDDRI ('KdbK'):
Benefits:
Allocation Strategy:
Example:
Offset Handling:
Why Different?
Implication:
Code compiled for x64 will not work on x86 and vice versa. Requires separate compilation for each architecture.
Challenge:
IRPs can be cancelled at any time (application closes, timeout expires). The driver must handle cancellation gracefully without causing BSOD.
Cancellation Routine:
Race Condition Pre:
When dequeuing IRPs, check if cancel routine was cleared:
WSK Operation Failures:
Design Decision:
Network failures are non-fatal. The dri to intercept keystrokes but silently drops data if network is una.
Rationale:
Compiler Flags (Release):
Linker Flags:
Result:
1. Dri Enforcement (DSE):
2. File System :
3. Registry Protection:
4. CLSID Integrity:
File Artifacts:
Registry Artifacts:
Network Artifacts:
Process Artifacts:
Beha Indicators:
| Technique ID | Description |
|--------------|-------------|
| T1547.001 | Boot or Logon Autostart – Dri with AUTO_START |
| T1546.015 | CLSID Hijacking – COM object persistence |
| T1547.006 | Kernel Modules and Extensions – Kernel dri |
| T1056.001 | Input Capture – Keyboard interception |
| T1134.001 | Impersonation – TrustedInstaller token theft |
| T1046 | Network Service Discovery – UDP listener on localhost |
Pre:
Detection:
Response:
bcdedit /set testsigning offsc delete kvckbdRequired Tools:
Project Structure:
Build Order:
1. ExplorerFrame.dll (Release | x64)
2. kvckbd.sys (Release | x64)
3. Resource packaging script (embed DLL and SYS in ICO)
4. UdpLogger.exe (Release | x64)
Configuration:
All projects use Release configuration with aggressi.
Test Signing (De):
Production Signing:
Requires EV Code Signing Certificate from Microsoft-trusted CA.
Timestamp Modification:
Both UdpLogger.exe and ExplorerFrame.dll ha events that modify timestamps:
Purpose:
#### 1. Dri to Load
Symptoms:
Causes:
Solutions:
#### 2. Service Won't Start
Symptoms:
Causes:
Solutions:
#### 3. No Keystroke Logging
Symptoms:
Causes:
Solutions:
#### 4. CLSID Hijack Not Active
Symptoms:
Causes:
Solutions:
Dri Output:
Use DebugView (Sysinternals) to capture kernel debug messages:
Network Capture:
Registry Monitoring:
System Won't Boot (Test Signing Issue):
1. Boot into Safe Mode (F8 during boot)
2. Disable test signing:
3. Reboot normally
Dri BSOD:
1. Boot into Safe Mode
2. Disable driver:
3. Delete dri:
4. Reboot
Service Locks Files:
| Component | Size (Compressed) | Size (Deployed) | Location | Protection Level |
|-----------|-------------------|-----------------|----------|------------------|
| UdpLogger.exe | ~160 KB | ~160 KB | User-controlled | None (public executable) |
| Embedded Resource | ~18 KB | N/A | Inside UdpLogger.exe | XOR + CAB compressed |
| kvckbd.sys | ~6 KB (in CAB) | ~15 KB | Dri FileRepository | TrustedInstaller ACL |
| ExpIorerFrame.dll | ~4 KB (in CAB) | ~8 KB | System32 | TrustedInstaller ACL |
| keyboard_log_*.txt | N/A | | %TEMP% or Documents | LocalSystem ACL (ser) |
Total Installation Time: ~0,2-1 second (excluding reboot)
Total Keystroke Latency: ~1.5ms (key press → disk write)
| Metric | Value | Notes |
|--------|-------|-------|
| Installation Time | 0,5-1 seconds | Excluding reboot prompt |
| Resource Extraction | <50ms | Entirely in-memory operations |
| Token Impersonation | ~200ms | TrustedInstaller service startup time |
| File Write (TI) | ~50ms/file | Direct API, no cmd.exe o |
| Registry Write (TI) | ~10ms/key | Single API call per operation |
| Keystroke Latency | <2ms | Kernel → Service → Disk |
| Service Memory | ~2 MB | Resident set size (RSS) |
| Dri | ~32 KB | Non-paged pool allocation |
| Log Growth Rate | ~1 KB/hour | A typing (60 WPM) |
| CPU Usage (Idle) | <0.04% | Service + dri |
| CPU Usage (Active) | ~0.1% | During continuous typing |
Static Analysis Challenges:
ExpIorerFrame vs ExplorerFrame)Runtime Beha Indicators:
| Indicator | | Forensic E |
|-----------|-----------|-------------------|
| Service "UdpKeyboardLogger" | High | sc query UdpKeyboardLogger |
| Driver "kvckbd" loaded | Medium | fltmc instances / dri |
| CLSID registry modification | Low | Requires TI pri to read |
| BCD test signing enabled | High | bcdedit /enum {current} shows testsigning=Yes |
| UDP port 31415 listening | Medium | netstat -ano | findstr 31415 |
| Log files in %TEMP% | High | to user account |
| "Test Mode" watermark absent | Medium | ExpIorerFrame.dll hooks API |
| TrustedInstaller usage | Low | Event log 4688 (process creation) |
EDR/A Techniques:
1. No Process Injection: Driver + service run as legitimate system components
2. No Code Caves: Direct file writes, not memory patching
3. Localhost-only Traffic: UDP to 127.0.0.1 (no external network activity)
4. Legitimate COM Mechanism: CLSID hijacking uses standard Windows feature
5. Test Signing Certificate: Dri (not unsigned/malformed)
6. TrustedInstaller Context: Operations appear as system maintenance
7. No Suspicious API Chains: Direct Win32 calls, minimal hooking
Forensic Artifacts:
HKLM\SYSTEM\CurrentControlSet\Services\kvckbdHKLM\SYSTEM\CurrentControlSet\Services\UdpKeyboardLoggerHKCR\CLSID\{ab0b37ec-56f6-4a0e-a8fd-7a8bf7c2da96}\InProcServer32HKLM\BCD00000000\Objects\{GUID}\Elements\16000049%SystemRoot%\System32\ExpIorerFrame.dll%SystemRoot%\System32\Dri\FileRepository\keyboard.inf_amd64_*\kvckbd.sys%TEMP%\keyboard_log_*.txt or %USERPROFILE%\Documents\keyboard_log_*.txt## ⚖️ Legal Notice
### Educational Purpose Statement
This project is provided strictly for educational and research purposes. It demonstrates:
Legal Requirements:
Prohibited Uses:
Red Team / Penetration Testing:
If used in authorized penetration testing:
Blue Team / Defense:
Understand these techniques to:
The authors and contributors:
By using this software, you agree:
If you disco or impro:
This project represents a comprehensi of Windows kernel programming, pri escalation, persistence mechanisms, and system internals. Through the three-component architecture (kernel driver, COM DLL, and management service), it demonstrates techniques rarely seen in modern dri.
Students and researchers can learn:
---
Star this repository if you found it educational!
⚠️ Remember: Knowledge is power. Use it responsibly. ⚠️
开发语言:C++
Star 数:15
该项目属于防护思路方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕Windows Kernel-Mode Keylogger - Educational rootkit driver intercepting keyboard IRPs for UDP logging. Demonstrates stealth persistence, privilege escalation & IRP hooking for offensive security research and defensive analysis.展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | KeyboardKit - Windows Kernel-Mode Keylogger - Educational rootki |
| 所属分类 | 防护思路 |
| 发布作者 | admin |
| 发布时间 | 2026-10-06 00:11:20 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 108 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |