
Ein PowerShell-Modul, das sich dem Reverse Engineering widmet.
Nativen und verwalteten Code disassemblieren.
Get-CSDisassemblyDisassembliert ein Byte-Array mithilfe des Capstone-Engine-Disassembly-Frameworks.
Get-ILDisassemblyDisassembliert ein rohes MSIL-Byte-Array, das von einem MethodInfo-Objekt übergeben wird, auf ähnliche Weise wie Ildasm.
Nützliche Werkzeuge für die Malware-Analyse.
New-FunctionDelegateStellt einen ausführbaren Wrapper für eine X86- oder X86_64-Funktion bereit.
Invoke-LoadLibraryLädt eine DLL in den aktuellen PowerShell-Prozess.
New-DllExportFunctionErstellt einen ausführbaren Wrapper-Delegaten um eine nicht verwaltete, exportierte Funktion.
Get-HostsFileParst eine HOSTS-Datei.
New-HostsFileEntryErsetzt oder fügt einen Eintrag in eine HOSTS-Datei ein.
Remove-HostsFileEntryEntfernt einen oder mehrere Einträge aus einer HOSTS-Datei.
Get-AssemblyStringsGibt alle Zeichenfolgen aus einer .NET-ausführbaren Datei aus.
Get-AssemblyResourcesExtrahiert verwaltete Ressourcen aus einer .NET-Assembly
Remove-AssemblySuppressIldasmAttributeEntfernt ein SuppressIldasmAttribute-Attribut aus einer .NET-Assembly.
Get-AssemblyImplementedMethodsGibt alle Methoden in einer Assembly zurück, die in MSIL implementiert sind.
Prozessspeicher untersuchen und analysieren
Get-ProcessStringsGibt alle druckbaren Zeichenfolgen aus dem Benutzermodus-Speicher eines Prozesses aus.
Get-VirtualMemoryInfoEin Wrapper für kernel32!VirtualQueryEx
Get-ProcessMemoryInfoRuft Informationen zum virtuellen Speicher für jeden eindeutigen Satz von Seiten im Benutzerspeicher ab. Diese Funktion ähnelt dem !vadump-Befehl von WinDbg.
Get-StructFromMemoryMarschallt Daten aus einem nicht verwalteten Speicherblock in einem beliebigen Prozess zu einem neu zugewiesenen verwalteten Objekt des angegebenen Typs.
Dateiformate und In-Memory-Strukturen parsen.
Get-PEEin PE-Parser und Prozess-Dumper für Festplatte und Arbeitsspeicher.
Find-ProcessPEsFindet portable ausführbare Dateien im Speicher, unabhängig davon, ob sie auf legitime Weise geladen wurden.
Get-LibSymbolsZeigt symbolische Informationen aus Windows-LIB-Dateien an.
Get-ObjDumpZeigt Informationen über Windows-Objektdateien (OBJ) an.
Niedrige Windows-Betriebssysteminformationen abrufen und analysieren.
Get-NtSystemInformationEin Dienstprogramm, das die Ausgabe der Funktion ntdll!NtQuerySystemInformation aufruft und parst. Dieses Dienstprogramm kann verwendet werden, um interne Betriebssysteminformationen abzufragen, die einem Benutzer normalerweise nicht angezeigt werden.
Get-PEBGibt den Prozess-Umgebungsblock (PEB) eines Prozesses zurück.
Register-ProcessModuleTraceStartet eine Ablaufverfolgung geladener Prozessmodule
Get-ProcessModuleTraceZeigt die seit dem Aufruf von Register-ProcessModuleTrace geladenen Prozessmodule an
Unregister-ProcessModuleTraceBeendet die laufende Ablaufverfolgung von Prozessmodulen
Get-SystemInfoEin Wrapper für kernel32!GetSystemInfo
Verschiedene Hilfsfunktionen
Get-MemberEine Proxy-Funktion zur Erweiterung des integrierten Get-Member-Cmdlets. Es fügt den Parameter '-Private' hinzu, mit dem nicht öffentliche .NET-Member angezeigt werden können.
Get-StringsGibt Zeichenfolgen aus Dateien sowohl in Unicode als auch in ASCII aus. Dieses Cmdlet repliziert die Funktionalität von strings.exe von Sysinternals.
ConvertTo-StringKonvertiert die Bytes einer Datei in eine Zeichenfolge, die eine 1:1-Zuordnung zu den ursprünglichen Bytes der Datei aufweist. ConvertTo-String ist nützlich für die Durchführung binärer regulärer Ausdrücke.
Get-EntropyBerechnet die Entropie einer Datei oder eines Byte-Arrays.
Bibliotheken, die von einigen der RE-Funktionen benötigt werden.
CapstoneDie C#-Bindung der Capstone-Disassemblierungs-Engine.
De4dotEine leistungsstarke Bibliothek zur .NET-Entschleierung und zum Parsen von .NET-PE-Dateien.
PSReflectEin Modul, das verwendet wird, um problemlos Enums, Strukturen und Win32-Funktionen im Speicher zu definieren.
Formattersps1xml-Dateien, die verwendet werden, um die Ausgabe verschiedener PowerShellArsenal-Funktionen zu formatieren.
Das PowerShellArsenal-Modul und alle einzelnen Skripte stehen unter der BSD 3-Clause-Lizenz, sofern nicht ausdrücklich anders angegeben.
Ausführliche Informationen zur Verwendung finden Sie in der kommentarbasierten Hilfe der einzelnen Skripte.
Um dieses Modul zu installieren, kopieren Sie den gesamten Ordner PowerShellArsenal in eines Ihrer Modulverzeichnisse. Die standardmäßigen PowerShell-Modulpfade sind in der Umgebungsvariable $Env:PSModulePath aufgeführt.
Der standardmäßige benutzerspezifische Modulpfad ist: "$Env:HomeDrive$Env:HOMEPATH\Documents\WindowsPowerShell\Modules" Der standardmäßige computerweite Modulpfad ist: "$Env:windir\System32\WindowsPowerShell\v1.0\Modules"
Um das Modul zu verwenden, geben Sie Import-Module PowerShellArsenal ein.
Um die importierten Befehle anzuzeigen, geben Sie Get-Command -Module PowerShellArsenal ein.
Wenn Sie PowerShell v3 ausführen und die lästige Warnung 'Möchten Sie wirklich Skripte ausführen, die aus dem Internet heruntergeladen wurden?' entfernen möchten, führen Sie nach dem Platzieren von PowerShellArsenal in Ihrem Modulpfad den folgenden Einzeiler aus:
$Env:PSModulePath.Split(';') | % { if ( Test-Path (Join-Path $_ PowerShellArsenal) ) {Get-ChildItem $_ -Recurse | Unblock-File} }
Für Hilfe zu jedem einzelnen Befehl ist Get-Help Ihr Freund.
Hinweis: Die in diesem Modul enthaltenen Werkzeuge wurden alle so konzipiert, dass sie einzeln ausgeführt werden können. Die Aufnahme in ein Modul dient lediglich der erhöhten Portabilität.
Für alle Mitwirkenden und zukünftigen Mitwirkenden von PowerShellArsenal bitte ich Sie, diese Stilrichtlinie beim Schreiben Ihrer Skripte/Module zu befolgen.
Vermeiden Sie Write-Host um jeden Preis. PowerShell-Funktionen/-Cmdlets sind keine Befehlszeilenprogramme! Pull-Requests, die Code enthalten, der Write-Host verwendet, werden nicht berücksichtigt. Stattdessen sollten Sie benutzerdefinierte Objekte ausgeben. Weitere Informationen zum Erstellen benutzerdefinierter Objekte finden Sie in diesen Artikeln:
Wenn Sie relevante Debug-Informationen auf dem Bildschirm anzeigen möchten, verwenden Sie Write-Verbose. Der Benutzer kann einfach '-Verbose' anhängen.
Geben Sie für jedes Skript immer eine beschreibende, kommentarbasierte Hilfe an. Stellen Sie außerdem sicher, dass Sie Ihren Namen und eine BSD 3-Clause-Lizenz einfügen (es sei denn, es liegen außergewöhnliche Umstände vor, die die Anwendung der BSD-Lizenz verhindern).
Stellen Sie sicher, dass alle Funktionen der richtigen PowerShell-Verb-Noun-Konvention folgen. Verwenden Sie Get-Verb, um die von PowerShell verwendeten Standardverben aufzulisten. Ausnahmen von den unterstützten Verben werden von Fall zu Fall geprüft.