Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
masm32-kernel-programming — masm32 kernel programming, drivers, tutorials, examples, and tools (credits Four-F) | Kitploit
Ferramentas/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)

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver RepositórioSite
13018há 3 anosRevisado pelo Kitploit

masm32-kernel-programming

Repositório do Dreg para as suas próprias necessidades

programação de kernel masm32, drivers, tutoriais, exemplos e ferramentas (créditos Four-F)

Instruções

  • baixe/clone este repositório
  • execute masm32v11r_install.exe
  • clique na imagem de instalação (terra)
  • instale o masm32 em C:\
  • recomendo adicionar as seguintes entradas à variável de ambiente PATH:
    • C:\masm32\bin
    • C:\masm32
  • copie o conteúdo de KmdKit18\include\ para C:\masm32\include\
  • copie o conteúdo de KmdKit18\macros\ para C:\masm32\macros\
  • copie o conteúdo de KmdKit18\lib\ para C:\masm32\lib\

Exemplo básico

  • copie beeper.asm para C:\
  • copie beeper.bat para C:\
  • execute beeper.bat

Neste momento, um .sys é criado em C:\

Como carregar/descarregar um driver

w2k_load.exe - melhor forma

carregar driver:

  • w2k_load.exe C:\beeper.sys

w2k_load.exe ou osrloader.exe apresentam um erro ao carregar beeper.sys, apenas ignore-o.

Esse erro é gerado pelo próprio código do driver quando ele termina a sua própria execução (com esse truque você não precisa descarregá-lo)

root@kitploit:~
mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
ret

Então, se beep.sys estiver carregado corretamente no kernel, você deve ouvir um bipe nos seus alto-falantes (o código do driver gera um bipe)

Quando precisar descarregar um driver, use:

  • w2k_load.exe PATH_SYS_FILE /unload

Eu modifiquei o w2k_load.exe do Sven B. Schreiber para funcionar do Windows 2000 ao Windows 10 (manifesto...)

osrloader

descompacte osrloaderv30.zip e use este programa GUI:

  • Selecione um arquivo .sys (caminho do driver)
  • Registre o serviço
  • Inicie o serviço

Como visualizar mensagens de depuração sem o windbg

para Windows mais antigos, basta usar o DbgView.exe anexado neste repositório. Aliás, eu o modifiquei (manifesto...)

Para Windows modernos, use o dbgview.exe mais recente do site da Sysinternals e verifique isto para solução de 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

Próximos passos

Leia os arquivos .pdf neste repositório e veja os exemplos no diretório KmdKit18/examples

AVISO: TODO o código-fonte ASM está dentro de arquivos .bat (código batch + asm misturados no mesmo arquivo)

Exemplo com 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 arquivo contém código BATCH que gera um .sys e também contém o próprio código-fonte do driver. Então, sim, é muito complicado; o script de compilação e o código-fonte estão juntos.

advanced/FindShadowTable

advanced/FindShadowTable

Este é um exemplo de como encontrar ServiceDescriptorTableShadow.

Ele apenas examina threads com ID 80h-400h tentando encontrar uma thread cujo KTHREAD.ServiceTable não seja igual a KeServiceDescriptorTable. Se tal thread for encontrada, seu KTHREAD.ServiceTable contém o endereço de ServiceDescriptorTableShadow.

Observe a saída de depuração do driver com o DbgView (www.sysinternals.com) ou use o SoftICE.

Testado em: Windows 2000, XP e Server 2003.

advanced/KbdSpy

advanced/KbdSpy

Este é um exemplo de um simples driver de filtro de teclado PS/2 legado (não PnP). AVISO: Você não conseguirá anexá-lo à pilha de teclado USB.

Testado em: Windows 2000, XP e Server 2003.

advanced/MouSpy

advanced/MouSpy

Four-F, [email protected] arquivos de macro são do meu pacote cocomac.

Este é um exemplo de um simples driver de filtro de mouse PS/2 legado (não PnP). AVISO: Você não conseguirá anexá-lo à pilha de mouse USB.

Testado em: Windows 2000, XP e Server 2003.

advanced/SecureDevices

advanced/SecureDevices

Este é um exemplo de como aplicar configurações de segurança específicas a um objeto de dispositivo nomeado chamando IoCreateDeviceSecure em vez de IoCreateDevice.

Como a rotina IoCreateDeviceSecure não faz parte do sistema operacional, vinculamos wdmsec.lib, que contém todas as rotinas necessárias.

A biblioteca wdmsec.lib que você encontrará aqui não é a que acompanha o DDK. Tive que reconstruí-la para reduzir seu tamanho, removendo membros desnecessários.

basic/FileWorks

basic/FileWorks

Este é um exemplo de como criar, gravar, ler e excluir o arquivo.

Use o KmdManager para registrar/cancelar o registro e iniciá-lo. Observe sua saída de depuração com o DbgView (www.sysinternals.com) ou use o SoftICE.

Testado em: Windows 2000, XP e Server 2003.

basic/HiddenDriver

basic/HiddenDriver

Este é um exemplo de como empacotar o driver em recursos.

Testado em: Windows 2000, XP e Server 2003.

basic/IsSafeBootMode

basic/IsSafeBootMode

A maneira de saber se o sistema está sendo executado em modo de segurança ou não.

Use o KmdManager para registrar/cancelar o registro e iniciá-lo. Observe sua saída de depuração com o DbgView (www.sysinternals.com) ou use o SoftICE.

Testado em: Windows 2000, XP e Server 2003.

basic/MemoryWorks/LookasideList

basic/MemoryWorks/LookasideList

Este é um exemplo de como usar lookaside list e lista duplamente vinculada para gerenciar os blocos de memória alocados a partir da lookaside list.

Use o KmdManager para registrar/cancelar o registro e iniciar/parar. Observe sua saída de depuração com o DbgView (www.sysinternals.com) ou use o SoftICE.

Testado em: Windows 2000, XP e Server 2003.

basic/MemoryWorks/seh

basic/MemoryWorks/seh

Este é um exemplo de como lidar com exceções usando SEH. Mas lembre-se. VOCÊ NÃO PODE LIDAR COM TODAS AS EXCEÇÕES COM SEH EM MODO KERNEL !

Use o KmdManager para registrar/cancelar o registro e iniciar/parar. Observe sua saída de depuração com o DbgView (www.sysinternals.com) ou use o SoftICE.

Testado em: Windows 2000, XP e Server 2003.

basic/MemoryWorks/SharedSection

basic/MemoryWorks/SharedSection

Este é um exemplo de como usar um objeto de seção nomeado para compartilhar memória entre um processo em modo de usuário e um driver em modo kernel.

Testado em: Windows 2000, XP e Server 2003.

basic/MemoryWorks/SharingMemory

basic/MemoryWorks/SharingMemory

Este é um exemplo de uma possível maneira de compartilhar o buffer de memória entre o modo de usuário e o modo kernel.

Testado em: Windows 2000, XP e Server 2003.

basic/MemoryWorks/SystemModules

basic/MemoryWorks/SystemModules

Este é um exemplo de como alocar memória em modo kernel. Para não alocá-la inutilmente, nós a preenchemos com algumas informações do sistema.

Use o KmdManager para registrar/cancelar o registro e iniciar/parar. Observe sua saída de depuração com o DbgView (www.sysinternals.com) ou use o SoftICE.

Testado em: Windows 2000, XP e Server 2003.

basic/RegistryWorks

basic/RegistryWorks

Este é um exemplo de como criar, definir, ler e excluir a chave de registro. Use o KmdManager para registrar/cancelar o registro e iniciá-lo. Observe sua saída de depuração com o DbgView (www.sysinternals.com) ou use o SoftICE.

Testado em: Windows 2000, XP e Server 2003.

basic/Sections

basic/Sections

Este é um exemplo de como colocar código em diferentes seções PE.

basic/Synchronization/MutualExclusion

basic/Synchronization/MutualExclusion

Este é um exemplo de como implementar acesso mutuamente exclusivo ao recurso.

Use o KmdManager para registrar/cancelar o registro e iniciar/parar. Observe sua saída de depuração com o DbgView (www.sysinternals.com) ou use o SoftICE.

basic/Synchronization/SharedEvent - ProcessMon

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

Este é um exemplo de como notificar o modo de usuário sobre algum tipo de evento que ocorreu.

Testado em: Windows 2000, XP e Server 2003.

basic/Synchronization/TimerWorks

basic/Synchronization/TimerWorks

Este é um exemplo de como criar, definir, aguardar e cancelar o temporizador. Use o KmdManager para registrar/cancelar o registro e iniciar/parar. Observe sua saída de depuração com o DbgView (www.sysinternals.com) ou use o SoftICE.

Testado em: Windows 2000, XP e Server 2003.

basic/WorkItem

basic/WorkItem

Exemplo de WorkItem

nodriver/DiskGeometry

nodriver/DiskGeometry

Neste exemplo, lidamos com um dispositivo de disco existente.

Testado em: Windows 2000, XP & Server 2003

nodriver/DriveLayout

nodriver/DriveLayout

Fornece informações sobre as características de cada partição de disco.

Testado em: Windows 2000, XP & Server 2003

nodriver/FloppyGeometry

nodriver/FloppyGeometry

Neste exemplo, lidamos com um dispositivo de disco existente.

Testado em: Windows 2000, XP & Server 2003

nodriver/KbdGarland

nodriver/KbdGarland

Neste exemplo, lidamos com um dispositivo de teclado existente.

Testado em: Windows 2000, XP & Server 2003

nodriver/KbdTypematic

nodriver/KbdTypematic

Neste exemplo, lidamos com um dispositivo de teclado existente. Este exemplo oferece parte da funcionalidade padrão do applet do Painel de Controle -> Teclado.

Testado em: Windows 2000, XP & Server 2003

nodriver/MbrDump

nodriver/MbrDump

Ler o MBR do modo de usuário é a coisa mais fácil de fazer se você souber de qual dispositivo ler.

Testado em: Windows 2000, XP & Server 2003

nodriver/SerialBaudRate

nodriver/SerialBaudRate

Neste exemplo, lidamos com um dispositivo serial existente.

Testado em: Windows 2000, XP & Server 2003

setup/EnumDisk

setup/EnumDisk

Este é um exemplo de como usar algumas das funções de dispositivo de setup. Enumera todos os dispositivos de disco disponíveis e obtém a propriedade do dispositivo. Execute-o a partir da linha de comando.

Testado em: Windows 2000, XP & Server 2003

simple/Beeper

simple/Beeper

Como emitir um bipe com o alto-falante do sistema.

Testado em: Windows NT4.0+sp6, 2000, XP & Server 2003

simple/DateTime

simple/DateTime

Fornece acesso direto de E/S de porta a um processo em modo de usuário Baseado no artigo e no código-fonte C de Dale Roberts.

Testado em: Windows 2000, XP & Server 2003

simple/GetKernelBase

simple/GetKernelBase

Este é um exemplo de como encontrar a base de ntoskrnl.exe.

Use o KmdManager para registrar/cancelar o registro e iniciar/parar. Observe sua saída de depuração com o DbgView (www.sysinternals.com) ou use o SoftICE.

Testado em: Windows 2000, XP & Server 2003

simple/NtBuild

simple/NtBuild

Demonstra a comunicação do driver com ReadFile, sem usar nenhum dos métodos. E como usar SEH no ring0.

Testado em: Windows 2000, XP & Server 2003

simple/Simplest

simple/Simplest

O driver de modo kernel mais simples possível que absolutamente não faz nada.

Testado em: Windows 2000, XP & Server 2003

simple/Skeleton

simple/Skeleton

O código esqueleto para um driver de dispositivo de modo kernel do Windows NT.

Testado em: Windows 2000, XP & Server 2003

simple/VirtToPhys

simple/VirtToPhys

Demonstra a comunicação do driver com DeviceIoControl, usando o método com buffer. E como traduzir endereços virtuais.

Testado em: Windows 2000, XP & Server 2003

simple/WhichIrqlAndContext

simple/WhichIrqlAndContext

Este exemplo permite que você saiba o IRQL e o contexto de Processo/Thread em que as rotinas principais do driver estão sendo executadas. Use o DebugView (www.sysinternals.com) para observar sua saída.

Testado em: Windows 2000, XP & 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

Mais informações para aprender

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

  • Documentação do Windows Driver Kit (WDK) versão 7.1.0: https://www.microsoft.com/en-us/download/details.aspx?id=11800

  • Documentação do WDK: https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk

  • Manual do desenvolvedor de software das Arquiteturas Intel 64 e IA-32, volumes combinados: 1, 2A, 2B, 2C, 2D, 3A, 3B, 3C, 3D e 4

  • Vazamento do código-fonte do Windows 2003, WRK, CRK ...

  • Livro Undocumented Windows NT por Prasad Dabak, Sandeep Phadke e Milind Borate

  • Livro Windows Kernel Programming por Pavel Yosifovich

  • Livros Windows Internals por Mark Russinovich, David A. Solomon e outros

  • (livro) The Rootkit Arsenal 2ª ed. por Bill Blunden

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

  • (livro) Subverting the Windows Kernel

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

  • osdev (comunidade para pessoas interessadas em desenvolvimento de sistemas operacionais)

  • github/gist aleatórios, OSR, phrack, uninformed, openrce, kernelmode, rootkit.com, arteam...

Pessoas para 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
Baixar ferramenta