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
Winstrument — Winstrument is a framework of modular scripts to aid in instrumenting Windows software using Frida for reverse engineering and attack surface analysis. | Kitploit
Ferramentas/GitHubGitHub/nccgroup/winstrument
Vulnerability AnalysisDynamic Code Analysis (DAST)Reverse EngineeringBinary Analysis
GitHubnccgroup/winstrument

Winstrument

Winstrument is a framework of modular scripts to aid in instrumenting Windows software using Frida for reverse engineering and attack surface analysis.

Ver Repositório
689há 6 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

Winstrument

Winstrument é um framework de scripts modulares para auxiliar na instrumentação de software Windows usando Frida para engenharia reversa e análise de superfície de ataque.

Conteúdo

  • Instalação
  • Uso
  • Estrutura do Projeto
  • Módulos
  • CLI
  • Solução de Problemas
  • Copyright

Instalação

Este projeto suporta python 3.7. Supondo que você já tenha Python e pip instalados, simplesmente:

root@kitploit:~
pip install winstrument

e, em seguida, para executar o programa, execute:

root@kitploit:~
winstrument

Observe que a ferramenta é atualmente experimental e pode, às vezes, congelar ou apresentar outros problemas de estabilidade.

Em alguns casos, como em uma instalação nova do Windows 10, você pode encontrar um erro de SSL no pip ao instalar o Frida. Se isso acontecer, consulte Solução de Problemas abaixo.

Uso

Para executar o REPL do winstrument, basta executar winstrument. Aqui está um exemplo rápido de instrumentação do notepad.exe com o módulo registry. Para informações completas sobre os comandos disponíveis na CLI, veja a seção CLI abaixo.

root@kitploit:~
PS C:\winstrument> winstrument
> set target C:\Windows\System32\notepad.exe
> use registry
> run
Spawned 1144
instrumented process with pid: 1144 and path: C:\Windows\System32\notepad.exe

<User closes notepad from GUI>

detached from 1144 for reason process-terminated
> show registry
module    time               target                           function          hkey                subkey                                                                       value
--------  -----------------  -------------------------------  ----------------  ------------------  ---------------------------------------------------------------------------  ---------------------------------
registry  2019-08-19 07:03:07  C:\Windows\System32\notepad.exe  RegGetValueW      0x2f4               SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize                 AppsUseLightTheme
<...>

No exemplo acima, o usuário indica o processo alvo, neste caso notepad.exe. Em seguida, ele indica que deseja usar o módulo registry, que enumera chamadas de sistema relacionadas ao registro feitas pelo programa. Depois que o processo termina (o usuário fecha o Bloco de Notas), a saída armazenada pode ser visualizada usando show registry.

Estrutura do Projeto

O arquivo python principal winstrument.py inicializa o dispositivo Frida e gera uma instância do processo alvo. cmdline.py fornece uma interface de linha de comando usando cmd2. Este é o ponto de entrada principal do script quando o Winstrument é executado diretamente da linha de comando. Os comandos estão documentados abaixo.

Em seguida, ele percorre cada módulo habilitado, instancia-o e chama o método load_scripts() do módulo para instrumentar o processo. Por fim, ele chama get_output() e on_finish() para cada módulo ao ser desanexado do alvo.

Os módulos estão contidos em arquivos .py no diretório modules/. Um módulo consiste em uma subclasse de base_module.BaseInstrumentation que define o código a ser injetado, o tratamento de mensagens para esse código injetado e a saída. As APIs dos módulos são definidas mais adiante na seção "Módulos" abaixo.

Cada módulo armazena metadados, como sua descrição, em modules/metadata.toml. A seção deve ser encabeçada pelo nome do módulo (sem diferenciar maiúsculas de minúsculas). Por exemplo, aqui está a seção correspondente ao módulo dlls:

root@kitploit:~
[DLLS]
description = """Hooks LoadLibrary-family system calls and outputs DLL loads where part of the search path might be
writable by the current user or a low-privileged user group."""

O programa armazena as configurações em settings.toml em %APPDATA%/winstrument. Como a maioria, se não todos, os módulos injetarão Javascript no processo alvo, o diretório modules/js/ contém trechos de Javascript do Frida que são carregados e injetados pelos módulos. Esses arquivos devem ter o mesmo nome do módulo, ou seja, o módulo dlls.py usaria o JS de js/dlls.js.

Módulos

Conforme descrito acima, cada módulo é uma subclasse de BaseInstrumentation de base_module.py

Cada módulo deve definir seu nome (o nome dos arquivos python e js sem a extensão) como um atributo estático de classe chamado modulename. Os módulos podem usar ou sobrescrever os seguintes métodos de BaseInstrumentation:

  • __init__(self,*args,**kwargs) - Além de qualquer código de inicialização específico do módulo, este construtor deve chamar super().__init__(*args,**kwargs).
  • load_script(self) - Este método geralmente não precisa ser sobrescrito, pois a implementação em BaseInstrumentation deve ser suficiente para a maioria dos casos de uso. Para capturar eventos do Frida, sobrescreva register_callbacks() em vez disso. load_script deve ser usado para carregar o arquivo javascript a ser instrumentado, chamar session.create_script do Frida, adicionar quaisquer callbacks desejados e, em seguida, chamar o método load() do objeto do script para instrumentar.
  • register_callbacks(self) - Chamado por BaseInstrumentation.load_script antes de carregar o script no processo alvo. Usado para registrar eventos como _session.on('message') etc. A versão adiciona um hook para on_message por padrão.

CLI

O shell do Winstrument fornece os seguintes comandos:

  • list - Exibe todos os módulos disponíveis e carregados
  • load <modulename>/use <modulename> - Habilita o módulo com o nome fornecido
  • unload <modulename> - Desabilita o módulo com o nome fornecido
  • set [setting [value]] - Sem argumentos, exibe todas as configurações e seus valores. Com um argumento, exibe o valor de setting. Com dois argumentos, define setting como value. As configurações persistem entre várias execuções.
  • show [modulename [format]] - Exibe a entrada armazenada de modulename no format especificado. Execute sem argumentos para ver uma lista de formatadores.
  • info <modulename> - Imprime uma descrição do módulo com o nome fornecido.
  • - Inicia a instrumentação.

Solução de Problemas

O pip falha com "SSL Certificate Verify Failed" ao instalar o Frida

Isso parece ocorrer principalmente em uma instalação nova do Windows. O setup.py do Frida tenta baixar um arquivo .egg de https://files.pythonhosted.org. Em alguns casos, isso falha porque o certificado SSL desse domínio não é verificado. Isso parece ser um efeito colateral da forma como o Windows carrega as CAs raiz. O Windows parece não incluir todas as CAs raiz em uma instalação padrão, preferindo, em vez disso, baixá-las conforme necessário quando sites são visitados. Como resultado, a CA raiz que assinou o certificado SSL de files.pythonhosted.org pode não estar no armazenamento de confiança do sistema.

Para resolver esse problema, visite https://files.pythonhosted.org manualmente no Edge ou no Chrome para fazer o Windows adicionar a CA raiz ao seu armazenamento de confiança e, em seguida, tente pip install novamente. Observe que visitar a página no Firefox não funcionará, porque o Firefox usa seu próprio armazenamento de confiança em vez do armazenamento do sistema.

Copyright

Winstrument é licenciado sob GPLv3. Para mais detalhes, consulte o arquivo LICENSE.

Baixar ferramenta
BaseInstrumentation
  • write_message(message) recebe uma mensagem semelhante a JSON como um dict, grava-a no banco de dados sqlite e a salva para ser exibida posteriormente.
  • post_load(self) Chamado por BaseInstrumentation.load_script após o script ser carregado dentro do processo alvo. Isso poderia ser usado, por exemplo, para chamar métodos rpc exportados pelo script.
  • get_output(self) - Chamado pelo script principal quando o alvo é desanexado. Este método deve retornar uma lista, onde cada entrada é um objeto MoudleMessage (de data/module_message.py). Geralmente não precisa ser sobrescrito.
  • on_message(self,message,data) - Callback para lidar com o evento message do frida, que é acionado por send no JS injetado
  • on_finish(self) - Callback chamado pelo script principal quando o alvo se torna desanexado. Execute aqui quaisquer operações de limpeza necessárias.
  • run
  • q/quit/exit - Sai da CLI (obviamente).