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
WTSRM2 — Biblioteca header-only em C++17 para desenvolvimento evasivo no Windows: hashing de API em tempo de compilação, unhooking de DLL, limpeza de breakpoints de hardware, remoção de VEH e supressão de callbacks de notificação de DLL para evadir os hooks de EDR. | Kitploit
Ferramentas/GitHubGitHub/rad9800/wtsrm2
Evasão de IDS/IPSRed TeamingDesenvolvimento de Payloads
GitHubrad9800/wtsrm2

WTSRM2

Biblioteca header-only em C++17 para desenvolvimento evasivo no Windows: hashing de API em tempo de compilação, unhooking de DLL, limpeza de breakpoints de hardware, remoção de VEH e supressão de callbacks de notificação de DLL para evadir os hooks de EDR.

Ver Repositório
16432há 3 anosRevisado pelo Kitploit

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

WTSRM2

Esta é uma continuação do meu projeto original WTSRM e da correspondente palestra.

Este projeto foi reescrito para utilizar C++17 e criar um template que nos permite alterar a funcionalidade necessária em tempo de compilação com facilidade! Ele é implementado como um arquivo somente de cabeçalho, para que você possa adicioná-lo facilmente aos seus próprios projetos.

Alguns dos recursos atualmente implementados incluem:

  • Sem dependências de CRT (binário de 10KB)
  • Remover hooks de todas as DLLs do Windows com um patch '.text' usando \KnownDlls\ ou \System32\
  • Usar VirtualProtect ou WriteProcessMemory para aplicar patches
  • Hashing de API em tempo de compilação
  • Remover e restaurar Vectored Exception Handlers
  • Remover callbacks de notificação de DLL do Ldr
  • Limpar breakpoints de hardware
  • Carregar bibliotecas usando work items

Podemos configurar esse comportamento da seguinte forma

root@kitploit:~
#define HASHING_ALGORITHM hash_string_fnv1a	// constexpr algorithm

namespace config
{
	...

	//
	// configure behaviour
	//
	inline constexpr unsigned unhooking = system32 | write_process_memory;
	inline constexpr auto work_item_load_library = true; // use a work item for LL

	//
	// configure evasive features
	//
	inline constexpr auto clear_and_restore_veh = true; // clear and restore veh
	inline constexpr auto unregister_dll_notifs = true; // LdrRegisterDllNotification
	inline constexpr auto clear_thread_hwbps = true; // clear the hwbps
}

Como utilizamos constexpr, não pagamos pelos recursos que não usamos, pois eles são código morto e são otimizados para fora do programa.

Usando este cabeçalho

Para importar DLLs, primeiro devemos criar o hash usando a macro DLL_HASH

root@kitploit:~
DLL_HASH(DBGHELP, L"DBGHELP.DLL")

Em seguida, devemos adicioná-lo à module_address_table, que atua como nossa IAT interna. A constante hash_ é criada pela macro DLL_HASH. Para DLLs não comuns que nem sempre estão carregadas, devemos especificar seus nomes para que possamos carregá-las.

root@kitploit:~
inline addr_struct<decltype(HASHING_ALGORITHM(TOKENIZEA(T))), wchar_t> module_address_table[] =
{
	{hash_NTDLL, nullptr,},
	{hash_KERNEL32, nullptr,},
	{hash_DBGHELP, nullptr, L"DBGHELP.DLL"}
};

Para importar funções, primeiro devemos criar o hash do nome da função e o typedef usando a macro HASH_FUNC

root@kitploit:~
HASH_FUNC(NtUnmapViewOfSection, NTSTATUS, HANDLE, PVOID)

O primeiro parâmetro é o nome da função, o próximo é o tipo de retorno e, em seguida, os argumentos da função. Em seguida, devemos adicioná-la à nossa api_address_table, que será preenchida com os endereços atuais das funções

root@kitploit:~
inline addr_struct<decltype(HASHING_ALGORITHM(TOKENIZEA(T))), void> api_address_table[] =
{
	{hash_GetProcAddress, nullptr},		
	{hash_NtUnmapViewOfSection, nullptr},

Se você não adicionar essa função a essa tabela, o programa não irá falhar, mas retornará -1 na tentativa de aumentar a estabilidade.

Para usar uma API, use a macro API()() como demonstrado

root@kitploit:~
API(NtWaitForSingleObject)(NtCurrentProcess(), FALSE, &timeout);

Para adicionar sua própria função de hashing de API, você deve usar este template para trabalhar com os tipos necessários.

root@kitploit:~
template <typename T>
constexpr auto hash_string_(const T* buffer)
{
	TRIVIAL_TYPE_CHECK()

}

Agradecimentos a estas pessoas, em nenhuma ordem específica, por suas ideias e contribuições @peterwintrsmith @modexpblog @jonaslyk @JustasMasiulis

Baixar ferramenta