Accueil
Articles
Astuces
Actualités
Auteurs
A propos
Contact
S'enregistrer
|
S'identifier
S'identifier
Authentification invalide
N
om d'utilisateur
M
ot de Passe
S
e souvenir de moi la prochaine fois.
S'identifier
Annuler
S'enregistrer
Mot de passe oublié ?
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
2 commentaire(s)
Tags:
C#
,
CLI
,
Framework .NET
,
Outils
4 | Retour sur l'éditeur d'instructions
1 | Introduction
2 | Notre application de démonstration
3 | Modification du code à l'aide de l'éditeur d'instructions
4 | Retour sur l'éditeur d'instructions
5 | Compilation et injection de code C# / VB.NET à la volée
6 | Retour sur l'injection de code C# / VB.NET
7 | Gestionnaires d'exceptions
8 | Le cas des assemblages signés
9 | Conclusion et retour sur Mono.Cecil
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.
1
2
3
4
5
6
7
8
9
»
Démarrer une discussion
Modification en cour d'éxécution
Chargement ...
Discussion démarée par
Noham Choulant
le 18/04/2008 à 13:53, 2 commentaire(s).
Ecrire un commentaire
Titre
Commentaire
Annuler