Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
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
Tools/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.

Repository anzeigen
689vor 6 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Winstrument

Winstrument ist ein Framework aus modularen Skripten, die bei der Instrumentierung von Windows-Software mit Frida für Reverse Engineering und Angriffsflächenanalyse helfen sollen.

Inhalt

  • Installation
  • Verwendung
  • Projektstruktur
  • Module
  • CLI
  • Fehlerbehebung
  • Urheberrecht

Installation

Dieses Projekt unterstützt Python 3.7. Vorausgesetzt, Sie haben bereits Python und pip installiert, führen Sie einfach Folgendes aus:

root@kitploit:~
pip install winstrument

und führen Sie dann zur Ausführung des Programms Folgendes aus:

root@kitploit:~
winstrument

Beachten Sie, dass das Tool derzeit experimentell ist und manchmal einfrieren oder andere Stabilitätsprobleme haben kann.

In einigen Fällen, z. B. bei einer frischen Windows-10-Installation, kann beim Installieren von Frida ein SSL-Fehler in pip auftreten. Wenn dies passiert, siehe Fehlerbehebung unten.

Verwendung

Um die Winstrument-REPL auszuführen, führen Sie einfach winstrument aus. Hier ist ein kurzes Beispiel für die Instrumentierung von notepad.exe mit dem Modul registry. Vollständige Informationen zu den verfügbaren CLI-Befehlen finden Sie im CLI-Abschnitt unten.

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
<...>

Im obigen Beispiel gibt der Benutzer den Zielprozess an, in diesem Fall notepad.exe. Anschließend gibt er an, dass er das Modul registry verwenden möchte, das die vom Programm gemachten Systemaufrufe bezüglich der Registrierung aufzählt. Nachdem der Prozess abgeschlossen ist (der Benutzer schließt Notepad), kann die gespeicherte Ausgabe mit show registry angezeigt werden.

Projektstruktur

Die Haupt-Python-Datei winstrument.py initialisiert das Frida-Device und startet eine Instanz des Zielprozesses. cmdline.py stellt eine Befehlszeilenschnittstelle unter Verwendung von cmd2 bereit. Dies ist der Haupteinstiegspunkt des Skripts, wenn Winstrument direkt über die Befehlszeile ausgeführt wird. Die Befehle sind unten dokumentiert.

Anschließend geht es durch jedes aktivierte Modul, instanziiert es und ruft die load_scripts()-Methode des Moduls auf, um den Prozess zu instrumentieren. Schließlich ruft es für jedes Modul get_output() und on_finish() auf, wenn die Verbindung zum Ziel getrennt wird.

Die Module sind in .py-Dateien im Verzeichnis modules/ enthalten. Ein Modul besteht aus einer Unterklasse von base_module.BaseInstrumentation, die den zu injizierenden Code, die Nachrichtenbehandlung für diesen injizierten Code und die Ausgabe definiert. Die Modul-APIs werden weiter unten im Abschnitt „Module“ beschrieben.

Jedes Modul speichert Metadaten wie seine Beschreibung in modules/metadata.toml. Der Abschnitt sollte mit dem Namen des Moduls (Groß-/Kleinschreibung wird nicht beachtet) als Überschrift versehen sein. Zum Beispiel hier der Abschnitt, der dem dlls Modul entspricht:

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."""

Das Programm speichert Einstellungen in settings.toml in %APPDATA%/winstrument. Da die meisten, wenn nicht sogar alle, Module JavaScript in den Zielprozess injizieren, enthält das Verzeichnis modules/js/ Frida-JavaScript-Ausschnitte, die von den Modulen geladen und injiziert werden. Diese Dateien sollten denselben Namen wie das Modul haben, d. h. das Modul dlls.py würde JS aus js/dlls.js verwenden.

Module

Wie oben beschrieben, ist jedes Modul eine Unterklasse von BaseInstrumentation aus base_module.py.

Jedes Modul sollte seinen Namen (den Namen der Python- und JS-Dateien ohne Erweiterung) als statisches Klassenattribut namens modulename definieren. Module können die folgenden Methoden von BaseInstrumentation verwenden oder überschreiben:

  • __init__(self,*args,**kwargs) - Zusätzlich zu jedem modulspezifischen Initialisierungscode sollte dieser Konstruktor super().__init__(*args,**kwargs) aufrufen.
  • load_script(self) - Diese Methode muss im Allgemeinen nicht überschrieben werden, da die Implementierung in BaseInstrumentation für die meisten Anwendungsfälle ausreichen sollte. Um an Frida-Ereignisse anzuknüpfen, überschreiben Sie stattdessen register_callbacks(). load_script sollte verwendet werden, um die zu instrumentierende JavaScript-Datei zu laden, session.create_script von Frida aufzurufen, gewünschte Callbacks hinzuzufügen und dann die load()-Methode des Skriptobjekts zur Instrumentierung aufzurufen.
  • register_callbacks(self) - Wird von BaseInstrumentation.load_script aufgerufen, bevor das Skript in den Zielprozess geladen wird. Wird verwendet, um Ereignisse wie _session.on('message') usw. zu registrieren. Die -Version fügt standardmäßig einen Hook für on_message hinzu.

CLI

Die Winstrument-Shell bietet die folgenden Befehle:

  • list - Zeige alle verfügbaren und geladenen Module an.
  • load <modulename>/use <modulename> - Aktiviere das Modul mit dem angegebenen Namen.
  • unload <modulename> - Deaktiviere das Modul mit dem angegebenen Namen.
  • set [setting [value]] - Ohne Argumente werden alle Einstellungen und ihre Werte angezeigt. Mit einem Argument wird der Wert von setting angezeigt. Mit zwei Argumenten wird setting auf value gesetzt. Die Einstellungen bleiben über mehrere Läufe hinweg erhalten.
  • show [modulename [format]] - Zeigt gespeicherte Eingaben von modulename im angegebenen format an. Ohne Argumente ausführen, um eine Liste der Formatierer zu sehen.
  • info <modulename> - Gibt eine Beschreibung des Moduls mit dem angegebenen Namen aus.

Fehlerbehebung

Pip schlägt mit „SSL Certificate Verify Failed“ fehl, wenn Frida installiert wird

Dies scheint hauptsächlich bei einer neuen Windows-Installation aufzutreten. Das setup.py von Frida versucht, eine .egg-Datei von https://files.pythonhosted.org zu laden. In einigen Fällen schlägt dies fehl, weil das SSL-Zertifikat für diese Domäne nicht verifiziert werden kann. Dies scheint ein Nebeneffekt der Art zu sein, wie Windows Root-CAs lädt. Windows scheint bei einer Standardinstallation nicht alle Root-CAs mitzuliefern, sondern zieht sie stattdessen bei Bedarf nach, wenn Websites besucht werden. Infolgedessen ist die Root-CA, die das SSL-Zertifikat von files.pythonhosted.org signiert hat, möglicherweise nicht im System-Trust-Store vorhanden.

Um dieses Problem zu beheben, besuchen Sie https://files.pythonhosted.org manuell in Edge oder Chrome, damit Windows die Root-CA zu seinem Trust-Store hinzufügt, und versuchen Sie dann pip install erneut. Beachten Sie, dass der Besuch der Seite in Firefox nicht funktioniert, da Firefox seinen eigenen Trust-Store und nicht den System-Trust-Store verwendet.

Urheberrecht

Winstrument ist unter GPLv3 lizenziert. Weitere Einzelheiten finden Sie in der Datei LICENSE.

Tool herunterladen
BaseInstrumentation
  • write_message(message) - Nimmt eine JSON-ähnliche Nachricht als Dict, schreibt sie in die SQLite-Datenbank und speichert sie für die spätere Ausgabe.
  • post_load(self) - Wird von BaseInstrumentation.load_script aufgerufen, nachdem das Skript im Zielprozess geladen wurde. Dies könnte beispielsweise verwendet werden, um vom Skript exportierte RPC-Methoden aufzurufen.
  • get_output(self) - Wird vom Hauptskript aufgerufen, wenn das Ziel getrennt wird. Diese Methode sollte eine Liste zurückgeben, wobei jeder Eintrag ein MoudleMessage-Objekt ist (aus data/module_message.py). Sie muss im Allgemeinen nicht überschrieben werden.
  • on_message(self,message,data) - Callback zur Behandlung des Frida-message-Ereignisses, das durch send im injizierten JavaScript ausgelöst wird.
  • on_finish(self) - Callback, das vom Hauptskript aufgerufen wird, wenn das Ziel getrennt wird. Führen Sie hier alle erforderlichen Bereinigungsoperationen durch.
  • run - Instrumentierung starten.
  • q/quit/exit - Beendet die CLI (offensichtlich).