Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Submit
ToolsExploitsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
lithium-kernel — Windows kernel-mode driver with user-mode client exposing IOCTL-based physical and virtual memory read/write, page table walking, pattern scanning, and input emulation for game cheating. | Kitploit
Tools/GitHubGitHub/gmh5225/lithium-kernel
Memory ForensicsReverse EngineeringAnti-BotBinary Exploitation
GitHubgmh5225/lithium-kernel

lithium-kernel

Windows kernel-mode driver with user-mode client exposing IOCTL-based physical and virtual memory read/write, page table walking, pattern scanning, and input emulation for game cheating.

View Repository
122 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

██╗     ██╗████████╗██╗  ██╗██╗██╗   ██╗███╗   ███╗
██║     ██║╚══██╔══╝██║  ██║██║██║   ██║████╗ ████║
██║     ██║   ██║   ███████║██║██║   ██║██╔████╔██║
██║     ██║   ██║   ██╔══██║██║██║   ██║██║╚██╔╝██║
███████╗██║   ██║   ██║  ██║██║╚██████╔╝██║ ╚═╝ ██║
╚══════╝╚═╝   ╚═╝   ╚═╝  ╚═╝╚═╝ ╚═════╝ ╚═╝     ╚═╝

Windows kernel-mode driver framework with user-mode client

Language Platform Arch Mode

[!IMPORTANT]

Get the complete project

Solution files are available through the Discord server.

Interested in purchasing the full source code? Contact me on Telegram or Discord: @tonythimself.


Overview

Lithium is a Windows kernel-mode driver (lithium-kernel) paired with a user-mode client (lithium-usermode). It communicates via a custom IOCTL interface and exposes low-level memory manipulation, page table walking, and input device control primitives.


Features

FeatureDescription
Physical Memory R/WDirect read/write physical addresses via MmCopyMemory
Virtual Memory R/WCross-process virtual memory access via MmCopyVirtualMemory
DTB ResolutionDirectory table base extraction via PFN database enumeration
Page Table WalkingLinear address translation with PML4/PDPT/PD/PT layer caching
Pattern ScanningIDA-style signature scanning across process memory
Memory AllocationZwAllocateVirtualMemory in target process context
Memory ProtectionZwProtectVirtualMemory in target process context
Mouse EmulationKernel-level mouse input via MouClass service callback hook
Thread HidingETHREAD field spoofing (start address, CID, create time, etc.)
NMI Callback DisableNMI callback suppression for debugger evasion
Pool CleaningBig pool table entry removal from kernel pool tracker

Project Structure

lithium/
├── lithium-kernel/              # Kernel-mode driver (KMDF)
│   ├── entry.cpp                # DriverEntry entry point
│   ├── core/
│   │   ├── dispatch/            # IOCTL dispatch and request routing
│   │   ├── requests/
│   │   │   ├── directory-table-base/  # DTB resolution & page table walk
│   │   │   ├── image-base/           # Process module base retrieval
│   │   │   ├── mouse/                # Mouse input emulation via MouClass
│   │   │   ├── read-write/           # Physical and virtual memory R/W
│   │   │   └── virtual-memory/       # Allocate, protect, query, pattern scan
│   │   └── utilities/
│   │       ├── kernel/          # Module enumeration, NMI, thread ops
│   │       └── ...              # Pool cleaner, CRT shim
│   └── dependencies/
│       ├── additional/
│       │   ├── crt/             # Minimal CRT implementation
│       │   ├── security/        # skCrypter string encryption, oxorany
│       │   └── structures/      # Shared invoke data structures
│       └── includes.hpp         # Master include header
│
└── lithium-usermode/            # User-mode client
    ├── entry.cpp                # Client entry point
    ├── core/
    │   └── driver/              # IOCTL communication layer
    └── dependencies/
        ├── additional/
        │   └── structs.hpp      # Page table entry unions & helpers
        └── includes.hpp

IOCTL Interface

Communication is established by hooking the IOCTL dispatch routine of an existing driver (ProcObsrvesx.sys). At load time, the kernel module locates the target driver, scans for its IRP dispatch handler, and overwrites it with a trampoline to lithium's own hooked_ioctl. The user-mode client opens \\.\ProcObsrvesx and all IOCTLs are transparently redirected through the hook.

CodeInput StructAction
invoke_basebase_invoke { pid, handle }Retrieve process image base
invoke_dtbdtb_invoke { pid, dtb }Resolve directory table base
invoke_readread_invoke { pid, directory_table, address, buffer, size }Read physical memory
invoke_writewrite_invoke { pid, directory_table, address, buffer, size }Write physical memory
invoke_read_virtualread_virtual_invoke { pid, address, buffer, size }Read virtual memory
invoke_write_virtualwrite_virtual_invoke { pid, address, buffer, size }Write virtual memory
invoke_allocateallocate_invoke { pid, type, protection, address, size }Allocate virtual memory
invoke_protectprotect_invoke { pid, protection, address, size }Change memory protection
invoke_virtual_queryquery_virtual_invoke { pid, address, mbi }Query virtual memory info
invoke_pattern_scanpattern_invoke { pid, signature, address, pattern_address }Pattern scan memory
invoke_move_mousemouse_invoke { x, y, flags, button_flags }Emulate mouse input

Internals

DTB Resolution

The driver iterates over the physical memory ranges returned by MmGetPhysicalMemoryRanges, walks the PFN database to locate the self-referencing PML4 entry, and validates each page table layer to confirm the correct directory table base for a given process.

Page Table Walking

Linear-to-physical translation traverses the four-level x64 page table hierarchy (PML4 → PDPT → PD → PT) with per-level caching. Large page (2MB / 1GB) support is included on a best-effort basis.

Mouse Emulation

The driver locates the MouClass and MouHID driver objects, resolves the MouseClassServiceCallback from the HID device extension, and injects MOUSE_INPUT_DATA packets directly into the callback chain.

Thread Hiding

Key ETHREAD fields — create time, start address, Win32 start address, kernel stack, CID, and exit status — are saved and replaced with benign or null values. On teardown, original values are restored before thread termination.


Requirements

  • Windows 10/11 x64
  • Visual Studio 2022 or later with Windows Driver Kit (WDK) 10.0.26100.0
  • A kernel driver loading method (test signing, kernel mapper, etc.)

Build

  1. Open lithium.sln in Visual Studio
  2. Set configuration to Release / x64
  3. Build lithium-kernel → lithium-kernel.sys
  4. Build lithium-usermode → lithium-usermode.exe

Or via MSBuild:

msbuild lithium.sln /p:Configuration=Release /p:Platform=x64

Usage

#include <core/driver/driver.hpp>

g_driver->initialize_handle();
DWORD pid = g_driver->get_process_id(L"target.exe");
g_driver->attach(pid);

g_driver->image_base = g_driver->get_image_base(0);
g_driver->dtb = g_driver->resolve_directory_table_base();

auto value = g_driver->read<uintptr_t>(g_driver->image_base + 0xOFFSET);
g_driver->mouse_event(-10, -10, 0, 0);

Dependencies

  • skCrypter — compile-time string encryption
  • oxorany — compile-time constant obfuscation

Disclaimer

This project is intended for educational and research purposes only.
Use only on systems you own or have explicit permission to test.
The authors are not responsible for any misuse or damage caused by this software.


built for research · not for production
Download Tool