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
Nim_DInvoke — Implementação de D/Invoke em Nim | Kitploit
Ferramentas/GitHubGitHub/s3cur3th1ssh1t/nim_dinvoke
Pós-ExploraçãoRed TeamingDesenvolvimento de PayloadsAtaque Adversário
GitHubs3cur3th1ssh1t/nim_dinvoke

Nim_DInvoke

Implementação de D/Invoke em Nim

Ver Repositório
10164há 4 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

Nim DInvoke

Implementação de D/Invoke em Nim

Todos os binários Nim normalmente expõem as mesmas 58-60 funções da API do Windows:

alt text

Todas as outras funções da API do Windows normalmente são resolvidas em tempo de execução via GetProcAddress e LoadLibraryA, como mencionado em OffensiveNim ou neste post de blog.

Portanto, não é possível ocultar importações de API (completamente) via DInvoke em Nim, a menos que alguém, por exemplo, use esta implementação de DInvoke para modificar o compilador Nim para uso de DInvoke em vez de Dynlib.

Analisar manualmente as funções do PEB em vez de usar GetProcAddress e LoadLibraryA ainda é mais furtivo do que o comportamento padrão do Nim. Para também evitar inline hooking, por exemplo, seria necessário o mapeamento manual de uma cópia nova da DLL, como mencionado no post de blog sobre DInvoke do TheWover:

alt text

Isso, no entanto, ainda não está implementado aqui yet. Atualmente estou apenas usando para carregar novas DLLs na memória.

Baixar ferramenta
LdrLoadDll

Este projeto foi fortemente inspirado no código D/Invoke do NanoDump.

A função pode então ser usada assim:

root@kitploit:~
const
  KERNEL32_DLL* = "kernel32.dll"
const
  OpenProcess_FuncName * = "OpenProcess"
type
  OpenProcess_t* = proc (dwDesiredAccess: DWORD, bInheritHandle: WINBOOL, dwProcessId: DWORD): HANDLE {.stdcall.}

MyOpenProcess = cast[OpenProcess_t](cast[LPVOID](get_function_address(cast[HMODULE](get_library_address(KERNEL32_DLL, FALSE)), OpenProcess_FuncName, 0)))

echo "[*] Calling OpenProcess via D/Invoke"
let pHandle = MyOpenProcess(
    PROCESS_ALL_ACCESS, 
    false, 
    cast[DWORD](https://github.com/s3cur3th1ssh1t/nim_dinvoke/blob/main/processID)
)

Nos meus testes, enfrentei comportamentos estranhos em algumas funções da API, que precisam de casos especiais para encontrar o endereço relativo correto. Minha confusão pode ser encontrada nos comentários. Talvez isso também seja apenas meu estilo de código ruim — quem sabe.

O exemplo, quando bem-sucedido, se parece com o seguinte:

alt text