dotPeek peut décompile tout assembly .NET en code C# équivalent et afficher en option le code IL sous-jacent.
dotPeek peut fonctionner avec des formats très différents, tels que les bibliothèques (.dll), les exécutables (.exe) et les fichiers de métadonnées (.winmd).
dotPeek permet également de décompiler les fichiers .baml, ce qui vous permet de reconstruire les définitions d'interface XAML.
En complément des assembly et des exécutables traditionnels, vous pouvez avoir des archives et des dossiers dotPeek (.zip, .vsix ou .nupkg) ouverts. Vous pouvez rechercher et charger des paquets NuGet (et leurs dépendances) à partir de n'importe quelle source de paquet en ligne, ou charger des paquets répertoriés dans un fichier packages.config dans votre projet Visual Studio.
Le code décompilé est mieux que rien, mais il peut arriver que la mise en correspondance d'un assembly à son code source soit possible, alors pourquoi ne pas en profiter ? dotPeek permet d'identifier le code source local basé sur les fichiers PDB ou extraire le code source des serveurs source, tels que le Centre Microsoft Reference Source ou SymbolSource.org. De plus, dotPeek peut générer des fichiers PDB.
Utilisez la liste déroulante du mode de navigation dans la barre de menus pour indiquer si vous souhaitez que dotPeek décompile les assembly, ou essayez de trouver le code source possible.
Vous pouvez choisir d'afficher certaines transformations du compilateur, ce qui rend la structure du code que dotPeek affiche très similaire à ce que le compilateur génère. Cela permet de voir comment le compilateur traite les lambdas, les closures et les propriétés automatiques entre autres choses.
La fenêtre Process Explorer affiche tous les processus en cours d'exécution, et permet d'en explorer les modules et de décomposer ceux qui se trouvent être des assembly .NET. Vous pouvez choisir d'afficher ou de masquer les processus et modules natifs, ou d'activer la vue de la hiérarchie des processus.
Filtrez la liste pour trouver le module ou processus que vous cherchez, puis ajoutez ses assemblies à Assembly Explorer pour mieux les étudier.
Lorsque vous devez explorer le code source plus avant, vous pouvez accéder au code IL depuis tout point du code C# décompilé.
La solution la plus rapide consiste à afficher le code IL dans une fenêtre d'outil distincte qui est synchronisée avec la visionneuse de code principale.
dotPeek peut afficher le code IL, qu'il s'agisse de code décompilé ou de code source reproduit à partir des fichiers de symbole.
Une autre solution consiste à afficher le code IL sous forme de commentaires pour le code C# décompilé, ce qui fusionne sa visionneuse de texte par défaut et la fenêtre IL Viewer, le tout dans une seule vue.
dotPeek prend en charge les mêmes thèmes de couleur que Visual Studio.
Par exemple, vous pouvez sélectionner le thème bleu ou sombre, ou choisir de synchroniser vos préférences de profil de couleurs avec les paramètres de Visual Studio.
Dans la mesure où dotPeek repose sur l'architecture puissante d'analyse du code de ReSharper, il permet de décompiler les assembly décompilés en tenant compte, ou non, du contexte, d'obtenir un bref résumé du contenu de chaque fichier décompilé, de définir des signets et d'explorer les chaînes d'héritage.
Avec dotPeek, vous disposez de plusieurs options pour rechercher les emplacements où les symboles sont référencés.
Appelez Find Usages pour trouver toutes les utilisations d'un symbole (telles qu'une méthode ou une propriété) sur toutes les assembly chargées. Les utilisations s'affichent dans la fenêtre d'outils Find Results où vous pouvez les grouper, naviguer entre elles, et les ouvrir dans la zone d'affichage du code.
Vous disposez également de Find Usages Advanced, qui est une version plus détaillée de Find Usages qui vous aide à préciser les critères de recherche en limitant la portée de la recherche et d'autres détails.
dotPeek surligne automatiquement toutes les utilisations visibles du symbole situé sous le caret, ce qui est très similaire au mode de fonctionnement des versions récentes de Visual Studio. Cela permet d'améliorer la lisibilité du code décompilé, notamment lorsque vous avez à faire aux identificateurs obfusqués.
En outre, si vous souhaitez couvrir toutes les utilisations dans le fichier, qu'elles soient actuellement visibles ou non, utilisez Highlight Usages in File. Cela surlignera toutes les utilisations d'un symbole donné dans le fichier actuel, avec deux couleurs distinctes indiquant les utilisations d'écriture et de lecture.
Utilisez Go to File Member pour obtenir rapidement une vue d'ensemble des membres et en assurer la navigation dans un document représentant un type décompilé. Entrez des parties de nom de membre pour y accéder directement.
D'autre part, si vous souhaitez obtenir un affichage statique dans le document actuel, ouvrez et ancrez la fenêtre d'outil File Structure. Vous pouvez également filtrer cette vue : sélectionnez la fenêtre d'outil, et tapez les premiers caractères des membres de type qui vous intéressent.
En indexant tous les assembly de votre liste d'assembly, ainsi que toutes leurs références, dotPeek fournit deux fonctionnalités permettant d'accéder rapidement à une section de code spécifique :
Si certaines lignes de code décompilé vous paraissent importantes et si vous souhaitez y revenir par la suite, n'hésitez pas à définir des signets.
Placez simplement un marqueur numéroté avec un raccourci qui vous permettra d'y revenir à tout moment avec un autre raccourci. Vous pouvez créer jusqu'à 10 marqueurs numérotés, et un nombre illimité de marque-pages sans numéro. La liste complète des emplacements de signets s'affiche dans une fenêtre contextuelle unique.
Chaque fois que vous placez un caret sur un symbole dans la zone de visualisation du code, dotPeek offre une pléthore d'options de navigation contextuelle qui sont toutes disponibles via le menu déroulant Navigate to.
Par exemple, Go to Declaration permet de passer de l'utilisation d'un symbole à sa déclaration. Si le symbole est déclaré sur un autre assembly, cet assembly est chargé automatiquement.
Go to Implementation permet de naviguer jusqu'aux implémentations finales des types et des membres de type, en contournant les étapes d'héritage intermédiaires dans la chaîne d'héritage, telles que les classes abstract.
D'autres options de navigation contextuelle utiles incluent Go to Base Symbols et 0>Go to Extension Methods.
Si vous souhaitez naviguer dans une hiérarchie d'héritage vers le haut et le bas à partir d'un type spécifique ou d'un membre de type, envisagez d'utiliser Go to Base Symbols et Go to Derived Symbols.
Cela est extrêmement utile lorsque vous devez accéder directement à un héritier ou un symbole de base.
Si vous souhaitez obtenir un résumé visuel d'une certaine chaîne d'héritage, utilisez Type Hierarchy.
dotPeek affiche l'ensemble des types hérités depuis le type sélectionné, ainsi que l'intégralité des types dont il hérite lui-même, sous forme d'arborescence ou de fenêtre indépendante.
dotPeek fournit des outils permettant de se faire rapidement une idée de la structure de tout assembly, de comprendre les relations entre les assembly, ainsi qu'organiser les assembly sous forme de liens discrets, ce qui permet de se concentrer uniquement sur les assembly qui vous intéressent dans le cadre de votre mission.
Vous pouvez travailler avec différentes listes d'assembly en fonction de votre contexte. Vous pouvez enregistrer et rouvrir des listes d'assembly et effacer la liste active si vous n'en avez plus besoin. Les listes d'assembly ne sont pas limitées aux fichiers .dll et .exe : elles peuvent également contenir des packages, des archives et des dossiers NuGet.
Lorsque vous travaillez sur une liste d'assembly, Assembly Explorer indique les types de référence, de resources et de code propres à une assembly, en faisant le grand écart des espaces de nom aux membres de type.
Pour chaque type, il met en avant les nœuds représentant ses types de base et ses héritiers en complément de la liste réelle de membres. La recherche et le filtrage rapides des nœuds en utilisant lowerCamelHumps sont également pris en charge.
dotPeek contribue également à explorer les métadonnées des assembly et tous les éléments qu'elles contiennent (tables, blobs, chaînes, etc.). Sous le nœud Metadata, vous pouvez explorer les valeurs des blobs, des en-têtes de fichiers PE, ou encore les utilisations des éléments des tables de métadonnées.
Comme partout ailleurs dans l'arborescence des assemblies, vous pouvez double-cliquer sur les métadonnées pour les décompiler et afficher le code correspondant.
Si vous souhaitez comprendre les interdépendances des assembly, vous pouvez en sélectionner plusieurs dans la section Assembly Explorer et demander à dotPeek d'afficher un diagramme de dépendance des assembly.
Cela permet de visualiser les relations entre les assembly sélectionnées sur la base de leurs références.
Gratuit, pas de clé de licence requise