Question

Je connais bien les outils Java permettant de manipuler, générer, décompiler le bytecode JVM (ASM, cglib, jad, etc.). Quels outils similaires existent pour le bytecode CLR? Est-ce que les gens manipulent le bytecode pour le CLR?

Était-ce utile?

La solution

Bytecode est un format binaire. Les assemblys .NET fonctionnent assez différemment en ce qui concerne la manière dont ils stockent les instructions d'exécution.

Au lieu de compiler en une structure de type bytecode, les langages .NET sont compilés en un langage intermédiaire (en fait, il s’appelle justement cela - IL).

C’est un langage lisible par l’homme qui ressemble en quelque sorte à une version d’assembleur orientée objet.

Ainsi, en termes d’examen ou de manipulation de l’IL pour des assemblages individuels, des outils tels que Reflector et ILDASM vous permettent de visualiser facilement l’IL pour n’importe quel assemblage.

La manipulation est un peu différente, je vous suggère de jeter un coup d'œil à certains des outils AOP de l'espace .NET. Je suggérerais également de jeter un coup d'œil à Phoenix, qui est un projet de compilation fourni par MS. Il possède des fonctionnalités de manipulation post-compilation vraiment intéressantes.

Si vous souhaitez en savoir plus sur les outils .NET AOP, je vous suggère d’ouvrir une autre question (c’est une autre boîte de Pandore).

Il existe également plusieurs livres qui vous apprendront les rouages ??de l’IL. Ce n'est pas une langue très compliquée à apprendre.

Autres conseils

Le réflecteur est toujours bon, mais Mono.Cecil est le meilleur outil que vous puissiez demander. C’est précieux pour manipuler CIL de quelque manière que ce soit.

Mono.Cecil est un excellent outil comme ASM. C'est un sous-projet de Mono, et totalement open source. Il fournit même le fonctionnalité améliorée que System.Reflection.

ILDASM et Un réflecteur vient à l'esprit.

NDepend vous permet d'effectuer une analyse statique des assemblys .NET (métriques de code, analyses de dépendance, etc.). NDepend est très utile pour avoir un aperçu de la structure de vos assemblages .NET en utilisant une matrice de dépendance, des graphiques de dépendance et des métriques de treemap visualisations. .

Il est également intégré à Reflector: vous pouvez par exemple détecter les types et méthodes importants dans vos assemblys en utilisant respectivement un type / méthode Mesure de classement (une mesure de code similaire à Google Page Rank) et passez directement de NDepend à Reflector pour obtenir le code désassemblé en C #, VB.NET, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top