Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
masm32-kernel-programming — masm32 kernel programming, drivers, tutorials, examples, and tools (credits Four-F) | Kitploit
Herramientas/GitHubGitHub/therealdreg/masm32-kernel-programming
Reverse EngineeringMalware AnalysisBinary AnalysisLearning & EducationCurated ResourcesLabs & Practice
GitHubtherealdreg/masm32-kernel-programming

masm32-kernel-programming

masm32 kernel programming, drivers, tutorials, examples, and tools (credits Four-F)

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
Ver RepositorioSitio web
13018hace 3 añosRevisado por Kitploit

masm32-kernel-programming

Repo de Dreg para sus propias necesidades

Programación de kernel con masm32, drivers, tutoriales, ejemplos y herramientas (créditos a Four-F)

Instrucciones

  • descarga/clona este repo
  • ejecuta masm32v11r_install.exe
  • haz clic en la imagen de instalación (earth)
  • instala masm32 en C:\
  • recomiendo añadir las siguientes entradas a la variable de entorno PATH:
    • C:\masm32\bin
    • C:\masm32
  • copia el contenido de KmdKit18\include\ a C:\masm32\include\
  • copia el contenido de KmdKit18\macros\ a C:\masm32\macros\
  • copia el contenido de KmdKit18\lib\ a C:\masm32\lib\

Ejemplo básico

  • copia beeper.asm a C:\
  • copia beeper.bat a C:\
  • ejecuta beeper.bat

En este momento se crea un .sys en C:\

Cómo cargar/descargar un driver

w2k_load.exe - la mejor forma

cargar driver:

  • w2k_load.exe C:\beeper.sys

w2k_load.exe u osrloader.exe dan un error al cargar beeper.sys, ignóralo.

Este error lo genera el propio código del driver cuando termina su ejecución (con este truco no necesitas descargarlo)

root@kitploit:~
mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
ret

Así que, si beep.sys se cargó correctamente en el kernel deberías escuchar un beep en tus altavoces (el código del driver genera un beep)

Cuando necesites descargar un driver usa:

  • w2k_load.exe PATH_SYS_FILE /unload

Modifiqué w2k_load.exe de Sven B. Schreiber para que funcione desde Windows 2000 hasta Windows 10 (manifest...)

osrloader

descomprime osrloaderv30.zip y usa este programa GUI:

  • Selecciona un archivo .sys (ruta del driver)
  • Registra el servicio
  • Inicia el servicio

Cómo ver mensajes de depuración sin windbg

para versiones antiguas de Windows solo usa DbgView.exe incluido en este repo. Por cierto, lo modifiqué (manifest...)

Para Windows modernos usa el último dbgview.exe del sitio web de sysinternals, y revisa esto para solucionar problemas:

  • https://stackoverflow.com/questions/12494300/no-output-from-debugview
  • http://msdn.microsoft.com/en-us/library/windows/hardware/ff551519(v=vs.85).aspx
  • https://learn.microsoft.com/en-us/sysinternals/downloads/debugview

Siguientes pasos

Lee los archivos .pdf de este repo y mira los ejemplos en el directorio KmdKit18/examples

ADVERTENCIA: TODO el código fuente ASM está dentro de archivos .bat (código batch + asm mezclados en el mismo archivo)

Ejemplo con advanced\FindShadowTable\FindShadowTable.bat

root@kitploit:~
;@echo off
;goto make

ASM DRIVER CODE GOES HERE

:make
set drv=FindShadowTable
\masm32\bin\ml /nologo /c /coff %drv%.bat
\masm32\bin\link /nologo /driver /base:0x10000 /align:32 /out:%drv%.sys /subsystem:native %drv%.obj
del %drv%.obj
echo.
pause

Este archivo contiene código BATCH que genera un .sys y también contiene el propio código fuente del driver. Así que, sí, es muy complicado, el script de compilación y el código fuente están juntos.

advanced/FindShadowTable

advanced/FindShadowTable

Este es un ejemplo de cómo encontrar ServiceDescriptorTableShadow.

Solo escanea hilos con ID 80h-400h intentando encontrar un hilo cuyo KTHREAD.ServiceTable no sea igual a KeServiceDescriptorTable. Si se encuentra un hilo así, su KTHREAD.ServiceTable contiene la dirección de ServiceDescriptorTableShadow.

Observa la salida de depuración del driver con DbgView (www.sysinternals.com) o usa SoftICE.

Probado en: Windows 2000, XP y Server 2003.

advanced/KbdSpy

advanced/KbdSpy

Este es un ejemplo de un driver de filtro de teclado PS/2 simple, heredado (no PnP). ADVERTENCIA: No podrás adjuntarlo a la pila de teclado USB.

Probado en: Windows 2000, XP y Server 2003.

advanced/MouSpy

advanced/MouSpy

Four-F, [email protected] Estos archivos de macros son de mi paquete cocomac.

Este es un ejemplo de un driver de filtro de ratón PS/2 simple, heredado (no PnP). ADVERTENCIA: No podrás adjuntarlo a la pila de ratón USB.

Probado en: Windows 2000, XP y Server 2003.

advanced/SecureDevices

advanced/SecureDevices

Este es un ejemplo de cómo aplicar ajustes de seguridad específicos a un objeto de dispositivo con nombre llamando a IoCreateDeviceSecure en lugar de IoCreateDevice.

Dado que la rutina IoCreateDeviceSecure no forma parte del sistema operativo, enlazamos wdmsec.lib, que contiene todas las rutinas necesarias.

La biblioteca wdmsec.lib que encontrarás aquí no es la que se distribuye con el DDK. Tuve que reconstruirla para reducir su tamaño, eliminando los miembros innecesarios.

basic/FileWorks

basic/FileWorks

Este es un ejemplo de cómo crear, escribir, leer y eliminar el archivo.

Usa KmdManager para registrarlo/desregistrarlo e iniciarlo. Observa su salida de depuración con DbgView (www.sysinternals.com) o usa SoftICE.

Probado en: Windows 2000, XP y Server 2003.

basic/HiddenDriver

basic/HiddenDriver

Este es un ejemplo de cómo empaquetar el driver en recursos.

Probado en: Windows 2000, XP y Server 2003.

basic/IsSafeBootMode

basic/IsSafeBootMode

La forma de saber si el sistema se está ejecutando en modo seguro o no.

Usa KmdManager para registrarlo/desregistrarlo e iniciarlo. Observa su salida de depuración con DbgView (www.sysinternals.com) o usa SoftICE.

Probado en: Windows 2000, XP y Server 2003.

basic/MemoryWorks/LookasideList

basic/MemoryWorks/LookasideList

Este es un ejemplo de cómo usar la lista lookaside y la lista doblemente enlazada para gestionar los bloques de memoria asignados desde la lista lookaside.

Usa KmdManager para registrarlo/desregistrarlo e iniciarlo/detenerlo. Observa su salida de depuración con DbgView (www.sysinternals.com) o usa SoftICE.

Probado en: Windows 2000, XP y Server 2003.

basic/MemoryWorks/seh

basic/MemoryWorks/seh

Este es un ejemplo de cómo manejar excepciones con SEH. Pero recuerda: ¡NO PUEDES MANEJAR TODAS LAS EXCEPCIONES CON SEH EN MODO KERNEL!

Usa KmdManager para registrarlo/desregistrarlo e iniciarlo/detenerlo. Observa su salida de depuración con DbgView (www.sysinternals.com) o usa SoftICE.

Probado en: Windows 2000, XP y Server 2003.

basic/MemoryWorks/SharedSection

basic/MemoryWorks/SharedSection

Este es un ejemplo de cómo usar un objeto de sección con nombre para compartir memoria entre un proceso en modo usuario y un driver en modo kernel.

Probado en: Windows 2000, XP y Server 2003.

basic/MemoryWorks/SharingMemory

basic/MemoryWorks/SharingMemory

Este es un ejemplo de una posible forma de compartir el búfer de memoria entre el modo usuario y el modo kernel.

Probado en: Windows 2000, XP y Server 2003.

basic/MemoryWorks/SystemModules

basic/MemoryWorks/SystemModules

Este es un ejemplo de cómo asignar memoria en modo kernel. Para no asignarla inútilmente, la llenamos con información del sistema.

Usa KmdManager para registrarlo/desregistrarlo e iniciarlo/detenerlo. Observa su salida de depuración con DbgView (www.sysinternals.com) o usa SoftICE.

Probado en: Windows 2000, XP y Server 2003.

basic/RegistryWorks

basic/RegistryWorks

Este es un ejemplo de cómo crear, establecer, leer y eliminar la clave de registro. Usa KmdManager para registrarlo/desregistrarlo e iniciarlo. Observa su salida de depuración con DbgView (www.sysinternals.com) o usa SoftICE.

Probado en: Windows 2000, XP y Server 2003.

basic/Sections

basic/Sections

Este es un ejemplo de cómo poner código en diferentes secciones PE.

basic/Synchronization/MutualExclusion

basic/Synchronization/MutualExclusion

Este es un ejemplo de cómo implementar acceso mutuamente exclusivo al recurso.

Usa KmdManager para registrarlo/desregistrarlo e iniciarlo/detenerlo. Observa su salida de depuración con DbgView (www.sysinternals.com) o usa SoftICE.

basic/Synchronization/SharedEvent - ProcessMon

[basic/Synchronization/SharedEvent - ProcessMon](KmdKit18/examples/basic/Synchronization/SharedEvent - ProcessMon)

Este es un ejemplo de cómo notificar al modo usuario que ha ocurrido algún tipo de evento.

Probado en: Windows 2000, XP y Server 2003.

basic/Synchronization/TimerWorks

basic/Synchronization/TimerWorks

Este es un ejemplo de cómo crear, establecer, esperar y cancelar el temporizador. Usa KmdManager para registrarlo/desregistrarlo e iniciarlo/detenerlo. Observa su salida de depuración con DbgView (www.sysinternals.com) o usa SoftICE.

Probado en: Windows 2000, XP y Server 2003.

basic/WorkItem

basic/WorkItem

Ejemplo de WorkItem

nodriver/DiskGeometry

nodriver/DiskGeometry

En este ejemplo tratamos con un dispositivo de disco existente.

Probado en: Windows 2000, XP y Server 2003

nodriver/DriveLayout

nodriver/DriveLayout

Proporciona información sobre las características de cada partición de disco.

Probado en: Windows 2000, XP y Server 2003

nodriver/FloppyGeometry

nodriver/FloppyGeometry

En este ejemplo tratamos con un dispositivo de disco existente.

Probado en: Windows 2000, XP y Server 2003

nodriver/KbdGarland

nodriver/KbdGarland

En este ejemplo tratamos con un dispositivo de teclado existente.

Probado en: Windows 2000, XP y Server 2003

nodriver/KbdTypematic

nodriver/KbdTypematic

En este ejemplo tratamos con un dispositivo de teclado existente. Este ejemplo ofrece parte de la funcionalidad estándar del applet Panel de control -> Teclado.

Probado en: Windows 2000, XP y Server 2003

nodriver/MbrDump

nodriver/MbrDump

Leer el MBR desde modo usuario es lo más fácil de hacer si sabes desde qué dispositivo leer.

Probado en: Windows 2000, XP y Server 2003

nodriver/SerialBaudRate

nodriver/SerialBaudRate

En este ejemplo tratamos con un dispositivo serie existente.

Probado en: Windows 2000, XP y Server 2003

setup/EnumDisk

setup/EnumDisk

Este es un ejemplo de cómo usar algunas de las funciones de dispositivo de setup. Enumera todos los dispositivos de disco disponibles y obtiene la propiedad del dispositivo. Ejecútalo desde la línea de comandos.

Probado en: Windows 2000, XP y Server 2003

simple/Beeper

simple/Beeper

Cómo hacer un beep con el altavoz del sistema.

Probado en: Windows NT4.0+sp6, 2000, XP y Server 2003

simple/DateTime

simple/DateTime

Da acceso directo de E/S de puertos a un proceso en modo usuario. Basado en el artículo y el código fuente en C de Dale Roberts.

Probado en: Windows 2000, XP y Server 2003

simple/GetKernelBase

simple/GetKernelBase

Este es un ejemplo de cómo encontrar la base de ntoskrnl.exe.

Usa KmdManager para registrarlo/desregistrarlo e iniciarlo/detenerlo. Observa su salida de depuración con DbgView (www.sysinternals.com) o usa SoftICE.

Probado en: Windows 2000, XP y Server 2003

simple/NtBuild

simple/NtBuild

Demuestra la comunicación del driver con ReadFile, sin usar ninguno de los métodos. Y cómo usar SEH en ring0.

Probado en: Windows 2000, XP y Server 2003

simple/Simplest

simple/Simplest

El driver en modo kernel más simple posible que no hace absolutamente nada.

Probado en: Windows 2000, XP y Server 2003

simple/Skeleton

simple/Skeleton

El código esqueleto para un controlador de dispositivo en modo kernel de Windows NT.

Probado en: Windows 2000, XP y Server 2003

simple/VirtToPhys

simple/VirtToPhys

Demuestra la comunicación del driver con DeviceIoControl, usando el método con búfer. Y cómo traducir direcciones virtuales.

Probado en: Windows 2000, XP y Server 2003

simple/WhichIrqlAndContext

simple/WhichIrqlAndContext

Este ejemplo te permite conocer el IRQL y el contexto de Proceso/Hilo en el que se están ejecutando las rutinas principales del driver. Usa DebugView (www.sysinternals.com) para ver su salida.

Probado en: Windows 2000, XP y Server 2003

Relacionados

  • https://masm32.com/board/index.php?topic=4452.0
  • http://www.masm32.com/website/kmdtute/index.html
  • https://www.asmcommunity.net/forums/topic/10872/2.html
  • http://four-f.narod.ru/
  • https://empyreal96.github.io/nt-info-depot/WinDDK.html

Más información para aprender

  • https://github.com/therealdreg/x86osdev

  • Documentación de Windows Driver Kit (WDK) Versión 7.1.0: https://www.microsoft.com/en-us/download/details.aspx?id=11800

  • Documentación de WDK: https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk

  • Manual combinado para desarrolladores de software de arquitecturas Intel 64 y IA-32: Volúmenes 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D y 4

  • Filtración del código fuente de Windows 2003, WRK, CRK ...

  • Libro Undocumented Windows NT de Prasad Dabak, Sandeep Phadke y Milind Borate

  • Libro Windows Kernel Programming de Pavel Yosifovich

  • Libros Windows Internals de Mark Russinovich, David A. Solomon y otros

  • (libro) The Rootkit Arsenal 2nd de Bill Blunden

  • (libro) What Makes It Page?: The Windows 7 (x64) Virtual Memory Manager de Enrico Martignetti

  • (libro) Subverting the Windows Kernel

  • (libro) Rootkits and Bootkits: Reversing Modern Malware and Next Generation Threats

  • osdev (comunidad para personas interesadas en el desarrollo de SO)

  • github/gist aleatorios, OSR, phrack, uninformed, openrce, kernelmode, rootkit.com, arteam...

Personas a seguir

  • https://github.com/hfiref0x
  • https://github.com/rwfpl
  • https://github.com/deroko
  • https://github.com/Fyyre
  • https://github.com/Cr4sh
  • https://twitter.com/zwclose
  • https://twitter.com/yarden_shafir
  • https://twitter.com/markrussinovich
  • https://twitter.com/aionescu
  • https://twitter.com/zodiacon
  • https://github.com/TheEnergyStory
  • https://twitter.com/msuiche
  • https://twitter.com/therealdreg
  • https://twitter.com/0vercl0k
  • https://twitter.com/Ivanlef0u
  • https://twitter.com/mrexodia
  • https://twitter.com/reversemode
  • https://twitter.com/standa_t
  • https://twitter.com/richinseattle
  • https://twitter.com/gynvael
  • https://twitter.com/j00ru
  • https://twitter.com/Xylit0l
Descargar herramienta