Sébastien Lebreton
Modification d'assemblage et injection de code C# / VB.NET à la volée
Reflexil est un plugin pour Reflector permettant la modification des assemblages .NET. Il permet par exemple d'altérer le code IL d'un assemblage ou de travailler à plus haut niveau en injectant directement du code C#/VB dans le corps d'une méthode.
Par Sébastien Lebreton publié le 17/09/2007 à 00:34, lu 2823 fois, 9 pages
 4 | Retour sur l'éditeur d'instructions
L'éditeur d'instructions supporte tous les opcodes définis dans Mono.Cecil. Les opérandes suivants sont supportés :
  • Types primitifs : byte, sbyte, int32, int64, single, double
  • String
  • Référence sur instruction pour les branchements
  • Références sur de multiples instructions pour les switchs
  • Référence sur un paramètre ou une variable de la méthode
  • Référence sur un type générique 'interne' ('T' par exemple)
  • Référence sur un champ, une méthode ou un type. On utilise alors le navigateur vu ci-avant pour sélectionner l'élément approprié. Le navigateur reprend les grands axes de fonctionnement du 'browser' de Reflector (Lazy loading, icônes, organisation, etc.)
De façon bien compréhensible, Les modèles objets de Reflector et Reflexil ne sont pas synchrones : les modifications faites sur le code IL ne vont pas impacter la fenêtre de désassemblage de Reflector.
Reflexil et Mono.Cecil ne procèdent à aucune vérification du code IL manipulé. La seule contrainte de cohérence est liée au type d'opérande utilisé pour un opcode donné. Il faut donc savoir ce que l'on fait. Pour ceux que le IL rebute, l'exemple suivant montre comment modifier le code d'une méthode directement avec du C# ou du VB.NET.
 
» Démarrer une discussion
 
Discussion démarée par Noham Choulant le 18/04/2008 à 13:53, 2 commentaire(s).