Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
lithium-kernel — Pilote en mode noyau Windows avec client en mode utilisateur exposant la lecture/écriture de mémoire physique et virtuelle via IOCTL, le parcours de tables de pages, le scan de motifs et l'émulation d'entrées pour la triche aux jeux. | Kitploit
Outils/GitHubGitHub/gmh5225/lithium-kernel
Criminalistique MémoireRétro-ingénierieAnti-BotExploitation de Binaires
GitHubgmh5225/lithium-kernel

lithium-kernel

Pilote en mode noyau Windows avec client en mode utilisateur exposant la lecture/écriture de mémoire physique et virtuelle via IOCTL, le parcours de tables de pages, le scan de motifs et l'émulation d'entrées pour la triche aux jeux.

Voir le dépôt
12il y a 2 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

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

Framework de pilote en mode noyau Windows avec client en mode utilisateur

Language Platform Arch Mode

[!IMPORTANT]

Obtenir le projet complet

Les fichiers de solution sont disponibles via le serveur Discord.

Intéressé par l'achat du code source complet ? Contactez-moi sur Telegram ou Discord : @tonythimself.


Aperçu

Lithium est un pilote en mode noyau Windows (lithium-kernel) associé à un client en mode utilisateur (lithium-usermode). Il communique via une interface IOCTL personnalisée et expose des primitives de manipulation de mémoire de bas niveau, de parcours de tables de pages et de contrôle de périphériques d'entrée.


Fonctionnalités

FonctionnalitéDescription
Lecture/Écriture mémoire physiqueLecture/écriture directe d'adresses physiques via MmCopyMemory
Lecture/Écriture mémoire virtuelleAccès inter-processus à la mémoire virtuelle via MmCopyVirtualMemory
Résolution du DTBExtraction de la base de la table de répertoires via l'énumération de la base de données PFN
Parcours de tables de pagesTraduction d'adresses linéaires avec mise en cache des couches PML4/PDPT/PD/PT
Analyse de motifsAnalyse de signatures de style IDA dans la mémoire d'un processus
Allocation mémoireZwAllocateVirtualMemory dans le contexte du processus cible
Protection mémoireZwProtectVirtualMemory dans le contexte du processus cible
Émulation de sourisEntrée souris au niveau noyau via un hook du callback du service MouClass
Dissimulation de threadsFalsification des champs ETHREAD (adresse de début, CID, heure de création, etc.)
Désactivation du callback NMISuppression du callback NMI pour l'évasion de débogueur
Nettoyage du poolSuppression d'entrées de la table big pool du traqueur de pool du noyau

Structure du projet

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

Interface IOCTL

La communication est établie en hookant la routine de dispatch IOCTL d'un pilote existant (ProcObsrvesx.sys). Au chargement, le module noyau localise le pilote cible, recherche son gestionnaire de dispatch IRP et l'écrase avec un trampoline vers le hooked_ioctl de lithium. Le client en mode utilisateur ouvre \\.\ProcObsrvesx et tous les IOCTL sont redirigés de manière transparente via le hook.

CodeStructure d'entréeAction
invoke_basebase_invoke { pid, handle }Récupérer la base de l'image du processus
invoke_dtbdtb_invoke { pid, dtb }Résoudre la base de la table de répertoires
invoke_readread_invoke { pid, directory_table, address, buffer, size }Lire la mémoire physique
invoke_writewrite_invoke { pid, directory_table, address, buffer, size }Écrire dans la mémoire physique
invoke_read_virtualread_virtual_invoke { pid, address, buffer, size }Lire la mémoire virtuelle
invoke_write_virtualwrite_virtual_invoke { pid, address, buffer, size }Écrire dans la mémoire virtuelle
invoke_allocateallocate_invoke { pid, type, protection, address, size }Allouer de la mémoire virtuelle
invoke_protectprotect_invoke { pid, protection, address, size }Modifier la protection mémoire
invoke_virtual_queryquery_virtual_invoke { pid, address, mbi }Interroger les informations de mémoire virtuelle
invoke_pattern_scanpattern_invoke { pid, signature, address, pattern_address }Analyse de motifs en mémoire
invoke_move_mousemouse_invoke { x, y, flags, button_flags }Émuler une entrée souris

Fonctionnement interne

Résolution du DTB

Le pilote itère sur les plages de mémoire physique retournées par MmGetPhysicalMemoryRanges, parcourt la base de données PFN pour localiser l'entrée PML4 auto-référencée, et valide chaque couche de table de pages pour confirmer la base de la table de répertoires correcte pour un processus donné.

Parcours de tables de pages

La traduction linéaire-vers-physique traverse la hiérarchie de tables de pages x64 à quatre niveaux (PML4 → PDPT → PD → PT) avec mise en cache par niveau. La prise en charge des grandes pages (2 Mo / 1 Go) est incluse au mieux.

Émulation de souris

Le pilote localise les objets pilotes MouClass et MouHID, résout le MouseClassServiceCallback depuis l'extension de périphérique HID, et injecte des paquets MOUSE_INPUT_DATA directement dans la chaîne de callbacks.

Dissimulation de threads

Les champs clés d'ETHREAD — heure de création, adresse de début, adresse de début Win32, pile noyau, CID et statut de sortie — sont sauvegardés et remplacés par des valeurs bénignes ou nulles. Lors du démontage, les valeurs d'origine sont restaurées avant la terminaison du thread.


Prérequis

  • Windows 10/11 x64
  • Visual Studio 2022 ou ultérieur avec Windows Driver Kit (WDK) 10.0.26100.0
  • Une méthode de chargement de pilote noyau (test signing, kernel mapper, etc.)

Compilation

  1. Ouvrir lithium.sln dans Visual Studio
  2. Définir la configuration sur Release / x64
  3. Compiler lithium-kernel → lithium-kernel.sys
  4. Compiler lithium-usermode → lithium-usermode.exe

Ou via MSBuild :

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

Utilisation

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

Dépendances

Télécharger l’outil