Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
lithium-kernel — Controlador en modo kernel de Windows con cliente en modo usuario que expone lectura/escritura de memoria física y virtual basada en IOCTL, recorrido de tablas de páginas, escaneo de patrones y emulación de entrada para trampas en juegos. | Kitploit
Herramientas/GitHubGitHub/gmh5225/lithium-kernel
Forensia de MemoriaIngeniería InversaAnti-BotExplotación de Binarios
GitHubgmh5225/lithium-kernel

lithium-kernel

Controlador en modo kernel de Windows con cliente en modo usuario que expone lectura/escritura de memoria física y virtual basada en IOCTL, recorrido de tablas de páginas, escaneo de patrones y emulación de entrada para trampas en juegos.

Ver Repositorio
12hace 2 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

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

Framework de controlador en modo kernel de Windows con cliente en modo usuario

Language Platform Arch Mode

[!IMPORTANT]

Obtén el proyecto completo

Los archivos de solución están disponibles a través del servidor de Discord.

¿Interesado en comprar el código fuente completo? Contáctame en Telegram o Discord: @tonythimself.


Descripción general

Lithium es un controlador en modo kernel de Windows (lithium-kernel) emparejado con un cliente en modo usuario (lithium-usermode). Se comunica mediante una interfaz IOCTL personalizada y expone primitivas de manipulación de memoria de bajo nivel, recorrido de tablas de páginas y control de dispositivos de entrada.


Características

CaracterísticaDescripción
Lectura/Escritura de memoria físicaLectura/escritura directa de direcciones físicas mediante MmCopyMemory
Lectura/Escritura de memoria virtualAcceso a memoria virtual entre procesos mediante MmCopyVirtualMemory
Resolución de DTBExtracción de la base de la tabla de directorios mediante enumeración de la base de datos PFN
Recorrido de tablas de páginasTraducción de direcciones lineales con caché de capas PML4/PDPT/PD/PT
Escaneo de patronesEscaneo de firmas estilo IDA en la memoria del proceso
Asignación de memoriaZwAllocateVirtualMemory en el contexto del proceso objetivo
Protección de memoriaZwProtectVirtualMemory en el contexto del proceso objetivo
Emulación de ratónEntrada de ratón a nivel de kernel mediante hook del callback del servicio MouClass
Ocultación de hilosSuplantación de campos de ETHREAD (dirección de inicio, CID, hora de creación, etc.)
Desactivación de callbacks NMISupresión de callbacks NMI para evasión de depuradores
Limpieza de poolEliminación de entradas de la tabla de big pool del rastreador de pool del kernel

Estructura del proyecto

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

Interfaz IOCTL

La comunicación se establece enganchando la rutina de despacho IOCTL de un controlador existente (ProcObsrvesx.sys). En tiempo de carga, el módulo del kernel localiza el controlador objetivo, busca su manejador de despacho IRP y lo sobrescribe con un trampolín hacia el propio hooked_ioctl de lithium. El cliente en modo usuario abre \\.\ProcObsrvesx y todos los IOCTL se redirigen de forma transparente a través del hook.

CódigoEstructura de entradaAcción
invoke_basebase_invoke { pid, handle }Obtener la base de la imagen del proceso
invoke_dtbdtb_invoke { pid, dtb }Resolver la base de la tabla de directorios
invoke_readread_invoke { pid, directory_table, address, buffer, size }Leer memoria física
invoke_writewrite_invoke { pid, directory_table, address, buffer, size }Escribir memoria física
invoke_read_virtualread_virtual_invoke { pid, address, buffer, size }Leer memoria virtual
invoke_write_virtualwrite_virtual_invoke { pid, address, buffer, size }Escribir memoria virtual
invoke_allocateallocate_invoke { pid, type, protection, address, size }Asignar memoria virtual
invoke_protectprotect_invoke { pid, protection, address, size }Cambiar la protección de memoria
invoke_virtual_queryquery_virtual_invoke { pid, address, mbi }Consultar información de memoria virtual
invoke_pattern_scanpattern_invoke { pid, signature, address, pattern_address }Escanear patrones en memoria
invoke_move_mousemouse_invoke { x, y, flags, button_flags }Emular entrada de ratón

Funcionamiento interno

Resolución de DTB

El controlador itera sobre los rangos de memoria física devueltos por MmGetPhysicalMemoryRanges, recorre la base de datos PFN para localizar la entrada PML4 autorreferenciada y valida cada capa de la tabla de páginas para confirmar la base de la tabla de directorios correcta para un proceso dado.

Recorrido de tablas de páginas

La traducción de lineal a físico recorre la jerarquía de tablas de páginas x64 de cuatro niveles (PML4 → PDPT → PD → PT) con caché por nivel. La compatibilidad con páginas grandes (2MB / 1GB) se incluye en la medida de lo posible.

Emulación de ratón

El controlador localiza los objetos de controlador MouClass y MouHID, resuelve el MouseClassServiceCallback desde la extensión del dispositivo HID e inyecta paquetes MOUSE_INPUT_DATA directamente en la cadena de callbacks.

Ocultación de hilos

Los campos clave de ETHREAD — hora de creación, dirección de inicio, dirección de inicio de Win32, pila del kernel, CID y estado de salida — se guardan y se reemplazan con valores benignos o nulos. Al desmontar, los valores originales se restauran antes de la terminación del hilo.


Requisitos

  • Windows 10/11 x64
  • Visual Studio 2022 o posterior con Windows Driver Kit (WDK) 10.0.26100.0
  • Un método de carga de controladores del kernel (test signing, kernel mapper, etc.)

Compilación

  1. Abre lithium.sln en Visual Studio
  2. Establece la configuración en Release / x64
  3. Compila lithium-kernel → lithium-kernel.sys
  4. Compila lithium-usermode → lithium-usermode.exe

O mediante MSBuild:

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

Uso

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

Dependencias

Descargar herramienta