Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
lithium-kernel — Driver kernel-mode di Windows con client user-mode che espone lettura/scrittura di memoria fisica e virtuale basata su IOCTL, page table walking, pattern scanning ed emulazione di input per il cheating nei giochi. | Kitploit
Strumenti/GitHubGitHub/gmh5225/lithium-kernel
Memory ForensicsReverse EngineeringAnti-BotBinary Exploitation
GitHubgmh5225/lithium-kernel

lithium-kernel

Driver kernel-mode di Windows con client user-mode che espone lettura/scrittura di memoria fisica e virtuale basata su IOCTL, page table walking, pattern scanning ed emulazione di input per il cheating nei giochi.

Vedi Repository
122 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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

Framework di driver in modalità kernel per Windows con client in modalità utente

Language Platform Arch Mode

[!IMPORTANT]

Ottieni il progetto completo

I file della soluzione sono disponibili tramite il server Discord.

Interessato all'acquisto del codice sorgente completo? Contattami su Telegram o Discord: @tonythimself.


Panoramica

Lithium è un driver in modalità kernel per Windows (lithium-kernel) abbinato a un client in modalità utente (lithium-usermode). Comunica tramite un'interfaccia IOCTL personalizzata ed espone primitive di manipolazione della memoria a basso livello, page table walking e controllo dei dispositivi di input.


Funzionalità

FunzionalitàDescrizione
Lettura/Scrittura memoria fisicaLettura/scrittura diretta di indirizzi fisici tramite MmCopyMemory
Lettura/Scrittura memoria virtualeAccesso alla memoria virtuale cross-processo tramite MmCopyVirtualMemory
Risoluzione DTBEstrazione della directory table base tramite enumerazione del database PFN
Page Table WalkingTraduzione degli indirizzi lineari con caching dei livelli PML4/PDPT/PD/PT
Pattern ScanningScansione di firme in stile IDA nella memoria del processo
Allocazione di memoriaZwAllocateVirtualMemory nel contesto del processo target
Protezione di memoriaZwProtectVirtualMemory nel contesto del processo target
Emulazione del mouseInput del mouse a livello kernel tramite hook della callback del servizio MouClass
Thread HidingSpoofing dei campi ETHREAD (indirizzo di avvio, CID, orario di creazione, ecc.)
Disattivazione callback NMISoppressione delle callback NMI per l'evasione del debugger
Pulizia del poolRimozione delle voci della big pool table dal tracker del pool del kernel

Struttura del progetto

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

Interfaccia IOCTL

La comunicazione viene stabilita tramite l'hook della routine di dispatch IOCTL di un driver esistente (ProcObsrvesx.sys). Al momento del caricamento, il modulo kernel individua il driver target, cerca il suo gestore di dispatch IRP e lo sovrascrive con un trampolino verso l'hooked_ioctl di lithium. Il client in modalità utente apre \\.\ProcObsrvesx e tutti gli IOCTL vengono reindirizzati in modo trasparente attraverso l'hook.

CodiceStruttura di inputAzione
invoke_basebase_invoke { pid, handle }Recupera l'image base del processo
invoke_dtbdtb_invoke { pid, dtb }Risolve la directory table base
invoke_readread_invoke { pid, directory_table, address, buffer, size }Legge la memoria fisica
invoke_writewrite_invoke { pid, directory_table, address, buffer, size }Scrive la memoria fisica
invoke_read_virtualread_virtual_invoke { pid, address, buffer, size }Legge la memoria virtuale
invoke_write_virtualwrite_virtual_invoke { pid, address, buffer, size }Scrive la memoria virtuale
invoke_allocateallocate_invoke { pid, type, protection, address, size }Alloca memoria virtuale
invoke_protectprotect_invoke { pid, protection, address, size }Modifica la protezione della memoria
invoke_virtual_queryquery_virtual_invoke { pid, address, mbi }Interroga le informazioni sulla memoria virtuale
invoke_pattern_scanpattern_invoke { pid, signature, address, pattern_address }Scansione pattern in memoria
invoke_move_mousemouse_invoke { x, y, flags, button_flags }Emula l'input del mouse

Internals

Risoluzione DTB

Il driver itera sugli intervalli di memoria fisica restituiti da MmGetPhysicalMemoryRanges, percorre il database PFN per individuare la voce PML4 auto-referenziante e convalida ogni livello della page table per confermare la corretta directory table base per un dato processo.

Page Table Walking

La traduzione da lineare a fisico attraversa la gerarchia a quattro livelli della page table x64 (PML4 → PDPT → PD → PT) con caching per livello. Il supporto per le large page (2MB / 1GB) è incluso su base best-effort.

Emulazione del mouse

Il driver individua gli oggetti driver MouClass e MouHID, risolve la MouseClassServiceCallback dall'estensione del dispositivo HID e inietta pacchetti MOUSE_INPUT_DATA direttamente nella catena di callback.

Thread Hiding

I campi chiave di ETHREAD — orario di creazione, indirizzo di avvio, indirizzo di avvio Win32, kernel stack, CID e stato di uscita — vengono salvati e sostituiti con valori benigni o nulli. Alla disattivazione, i valori originali vengono ripristinati prima della terminazione del thread.


Requisiti

  • Windows 10/11 x64
  • Visual Studio 2022 o successivo con Windows Driver Kit (WDK) 10.0.26100.0
  • Un metodo di caricamento del driver kernel (test signing, kernel mapper, ecc.)

Build

  1. Apri lithium.sln in Visual Studio
  2. Imposta la configurazione su Release / x64
  3. Compila lithium-kernel → lithium-kernel.sys
  4. Compila lithium-usermode → lithium-usermode.exe

Oppure tramite MSBuild:

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

Utilizzo

#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);

Dipendenze

  • skCrypter — crittografia delle stringhe a tempo di compilazione
  • oxorany — offuscamento delle costanti a tempo di compilazione

Disclaimer

Scarica lo strumento