
Un module PowerShell dédié à la rétro-ingénierie
Désassemblez du code natif et managé.
Get-CSDisassemblyDésassemble un tableau d'octets en utilisant le framework de désassemblage Capstone Engine.
Get-ILDisassemblyDésassemble un tableau d'octets MSIL brut passé à partir d'un objet MethodInfo d'une manière similaire à celle d'Ildasm.
Outils utiles lors de l'analyse de logiciels malveillants.
New-FunctionDelegateFournit un wrapper exécutable pour une fonction X86 ou X86_64.
Invoke-LoadLibraryCharge une DLL dans le processus PowerShell actuel.
New-DllExportFunctionCrée un délégué wrapper exécutable autour d'une fonction exportée non managée.
Get-HostsFileAnalyse un fichier HOSTS.
New-HostsFileEntryRemplace ou ajoute une entrée à un fichier HOSTS.
Remove-HostsFileEntrySupprime une entrée ou une série d'entrées d'un fichier HOSTS.
Get-AssemblyStringsAffiche toutes les chaînes d'un exécutable .NET.
Get-AssemblyResourcesExtrait les ressources managées d'un assembly .NET
Remove-AssemblySuppressIldasmAttributeSupprime l'attribut SuppressIldasmAttribute d'un assembly .NET.
Get-AssemblyImplementedMethodsRetourne toutes les méthodes d'un assembly qui sont implémentées en MSIL.
Inspectez et analysez la mémoire des processus
Get-ProcessStringsAffiche toutes les chaînes imprimables de la mémoire en mode utilisateur d'un processus.
Get-VirtualMemoryInfoUn wrapper pour kernel32!VirtualQueryEx
Get-ProcessMemoryInfoRécupère les informations de mémoire virtuelle pour chaque ensemble unique de pages en mémoire utilisateur. Cette fonction est similaire à la commande !vadump de WinDbg.
Get-StructFromMemoryMarshale les données d'un bloc de mémoire non managé dans un processus arbitraire vers un objet managé nouvellement alloué du type spécifié.
Analysez les formats de fichiers et les structures en mémoire.
Get-PEUn analyseur PE sur disque et en mémoire et un vidage de processus.
Find-ProcessPEsTrouve les exécutables portables en mémoire, qu'ils aient été chargés de manière légitime ou non.
Get-LibSymbolsAffiche les informations symboliques des fichiers LIB Windows.
Get-ObjDumpAffiche les informations sur les fichiers objet (OBJ) Windows.
Obtenez et analysez les informations de bas niveau du système d'exploitation Windows.
Get-NtSystemInformationUn utilitaire qui appelle et analyse la sortie de la fonction ntdll!NtQuerySystemInformation. Cet utilitaire peut être utilisé pour interroger des informations internes du système d'exploitation qui ne sont généralement pas visibles pour un utilisateur.
Get-PEBRetourne le bloc d'environnement de processus (PEB) d'un processus.
Register-ProcessModuleTraceDémarre une trace des modules de processus chargés
Get-ProcessModuleTraceAffiche les modules de processus qui ont été chargés depuis l'appel à Register-ProcessModuleTrace
Unregister-ProcessModuleTraceArrête la trace des modules de processus en cours
Get-SystemInfoUn wrapper pour kernel32!GetSystemInfo
Fonctions d'assistance diverses
Get-MemberUne fonction proxy utilisée pour étendre l'applet de commande Get-Member intégrée. Elle ajoute le paramètre '-Private' vous permettant d'afficher les membres .NET non publics.
Get-StringsExtrait les chaînes des fichiers en Unicode et en Ascii. Cette applet de commande reproduit la fonctionnalité de strings.exe de Sysinternals.
ConvertTo-StringConvertit les octets d'un fichier en une chaîne qui a un mappage 1 à 1 avec les octets d'origine du fichier. ConvertTo-String est utile pour effectuer des expressions régulières binaires.
Get-EntropyCalcule l'entropie d'un fichier ou d'un tableau d'octets.
Bibliothèques requises par certaines fonctions de rétro-ingénierie.
CapstoneLa liaison C# du moteur de désassemblage Capstone.
De4dotUne puissante bibliothèque de désobfuscation .NET et d'analyse PE .NET.
PSReflectUn module utilisé pour définir facilement des énumérations, des structures et des fonctions Win32 en mémoire.
FormattersFichiers ps1xml utilisés pour formater la sortie de diverses fonctions PowerShellArsenal.
Le module PowerShellArsenal et tous les scripts individuels sont sous la licence BSD 3-Clause sauf indication contraire explicite.
Reportez-vous à l'aide basée sur les commentaires dans chaque script individuel pour des informations détaillées sur l'utilisation.
Pour installer ce module, déposez le dossier entier PowerShellArsenal dans l'un de vos répertoires de modules. Les chemins de modules PowerShell par défaut sont listés dans la variable d'environnement $Env:PSModulePath.
Le chemin de module par utilisateur par défaut est : "$Env:HomeDrive$Env:HOMEPATH\Documents\WindowsPowerShell\Modules" Le chemin de module au niveau de l'ordinateur par défaut est : "$Env:windir\System32\WindowsPowerShell\v1.0\Modules"
Pour utiliser le module, tapez Import-Module PowerShellArsenal
Pour voir les commandes importées, tapez Get-Command -Module PowerShellArsenal
Si vous utilisez PowerShell v3 et que vous souhaitez supprimer l'ennuyeux avertissement 'Voulez-vous vraiment exécuter des scripts téléchargés depuis Internet', une fois que vous avez placé PowerShellArsenal dans votre chemin de modules, exécutez la commande suivante sur une ligne :
$Env:PSModulePath.Split(';') | % { if ( Test-Path (Join-Path $_ PowerShellArsenal) ) {Get-ChildItem $_ -Recurse | Unblock-File} }
Pour obtenir de l'aide sur chaque commande individuelle, Get-Help est votre ami.
Remarque : Les outils contenus dans ce module ont tous été conçus pour pouvoir être exécutés individuellement. Les inclure dans un module contribue simplement à une meilleure portabilité.
Pour tous les contributeurs et futurs contributeurs de PowerShellArsenal, je demande de suivre ce guide de style lors de l'écriture de vos scripts/modules.
Évitez Write-Host à tout prix. Les fonctions/applets de commande PowerShell ne sont pas des utilitaires en ligne de commande ! Les demandes de tirage contenant du code utilisant Write-Host ne seront pas considérées. Vous devez plutôt produire des objets personnalisés. Pour plus d'informations sur la création d'objets personnalisés, lisez ces articles :
Si vous souhaitez afficher des informations de débogage pertinentes à l'écran, utilisez Write-Verbose. L'utilisateur peut toujours ajouter '-Verbose'.
Fournissez toujours une aide descriptive basée sur les commentaires pour chaque script. Assurez-vous également d'inclure votre nom et une licence BSD 3-Clause (sauf circonstances atténuantes empêchant l'application de la licence BSD).
Assurez-vous que toutes les fonctions respectent la convention verbe-nom PowerShell appropriée. Utilisez Get-Verb pour lister les verbes par défaut utilisés par PowerShell. Les exceptions aux verbes pris en charge seront examinées au cas par cas.