Fonctionnalités dotPeek

Décompiler des assembly .NET en C# ou IL

dotPeek peut décompile tout assembly .NET en code C# équivalent et afficher en option le code IL sous-jacent.

Vue d'ensemble de l'interface dotPeek

Bibliothèques, exécutables et bien plus encore

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.

Afficher le code source si disponible

Afficher le code source si disponible

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.

Afficher le code généré par le compilateur

Afficher ou masquer le code généré par le compilateur

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.

Fenêtre Process Explorer de dotPeek

Explorer les processus d'exécution

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.

Visionneuse de code IL dans dotPeek

Afficher le code IL dans une vue séparée

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.

Code IL affiché sous forme de commentaires sur le code C#

Afficher le code IL sous forme de commentaires du code C# décompilé

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 peut afficher le code IL, qu'il s'agisse de code décompilé ou de code source reproduit à partir des fichiers de symbole.

Thème de couleur sombre dans dotPeek

Utilisez votre thème de couleur préféré

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.

Plusieurs possibilités de navigation dans le code décompilé

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.

La fenêtre Find Results donne la liste de toutes les utilisations d'un symbole

Trouver les utilisations de n'importe quel symbole

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.

Mise en évidence
                                    des utilisations dans le fichier

Surligner les utilisations dans la visionneuse de code

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.

Fenêtre File Structure

Explorer le document actuel

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.

Allez dans la section Everything pour passer à des types, fichiers, membres ou autres éléments spécifiques.

Accès à un élément de code

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 :

  • Go to Symbol permet de naviguer vers une déclaration de symbole spécifique, qui peut être un type, une méthode, un champ ou une propriété. Utilisez la syntaxe lowerCamelHumps pour rechercher les types : par exemple, entrez xmard pour rechercher et ouvrir XamlMarkupDeclaredElement.
  • Go to Everything permet de rechercher un assembly, un espace de nom, un type, un membre ou un fichier récemment ouvert.
Signets dans dotPeek

Définition de signets

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.

Options de navigation contextuelles

Navigation contextuelle

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.

Accéder aux types dérivés

Navigation dans les hiérarchies de classes

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.

Vue Type Hierarchy

Exploration des chaînes d'héritage

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.

Comprendre les assembly

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.

dotPeek facilite la navigation dans les dossiers, les archives et les packages NuGet

Gestion des listes d'assembly

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.

dotPeek Assembly Explorer

Exploration du contenu des assembly

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.

Exploration des métadonnées d'assembly avec dotPeek

Exploration des métadonnées des assembly

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.

Diagramme des dépendances des assemblies

Affichage des dépendances entre les assembly

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.

Télécharger dotPeek

Gratuit, pas de clé de licence requise