RAIL: Code Instrumentation for .NET



Code instrumentation is a mechanism that allows modules of programs to be completely rewritten at runtime. With the advent of virtual machines, this type of functionality is becoming more interesting because it allows the introduction of new functionality after an application has been deployed, easy implementation of aspect-oriented programming, performing security verifications, dynamic software upgrading, among others.
The Runtime Assembly Instrumentation Library (RAIL) is one of the first frameworks to implement code instrumentation in the .NET platform. It specifically addresses the limitations that exist between the reflection capabilities of .NET and its code emission functionalities. RAIL gives the programmer an object-oriented vision of the code of an application, allowing assemblies, modules, classes, references and even intermediate code to be easily manipulated.
This paper addresses the design of an implementation of RAIL along with the difficulties and lessons learned while building a framework for code instrumentation in .NET.


Software Engineering

Related Project

RAIL - Runtime Assembly Instrumentation Library


ACM Symposium On Applied Computing (SAC'05), March 2005

Cited by

Year 2011 : 1 citations

 L . Liu, Multi-level Sandboxing Techniques for Execution-based Stealthy Malware Detection, PhD Thesis, George Mason University, 2011.

Year 2010 : 3 citations

 Y. Ba, Sampling-based Program Execution Monitoring, Masters Thesis of Applied Science in Electrical and Computer Engineering, Waterloo, Ontario, Canada, 2010.

 Antonia Bertolino, Silvano Chiaradonna, Gabriele Costa, Felicita Di Giandomenico, Antinisca Di Marco, Paul Grace, Valerie Issarny, Marta Kwiatkowska, Fabio Martinelli, Paolo Masci, Ilaria Matteucci, Hongyang Qu, Mark Rouncefield, Rachid Saadi, Antonino Sabetta, Romina Spalazzese, Francois Taiani, Deliverable D5.2- Report on Conceptual Models for Assessment & Assurance of Dependability, Security and Privacy in the Eternal CONNECTed World, Antonia Bertolini (Editor), CONNECT – Emergent Connectors for Eternal Software Intensive Networked Systems, ICT FET IP Project, 2010.

 Lei Liu, Xinwen Zhang, Guanhua Yan, and Songqing Chen. sePlugin: Towards transparently secure plugins in your internet explorers, In Proceedings of the 8th International Conference on Applied Cryptography and Network Security, 2010. 67

Year 2008 : 2 citations


 T. Kempf, K. Karuri, and L. Gao, Software Instrumentation, in Wiley Encyclopedia of Computer Science and Engineering, pp1–11, 2008.

Year 2007 : 2 citations

 Fu, Xiang; Lu, Xin; Peltsverger, Boris; Chen, Shijun; Qian, Kai; Tao, Lixin; "A Static Analysis Framework For Detecting SQL Injection Vulnerabilities", in Proc. of the 31st International Computer Software and Applications Conference, July 2007

 Schmied, F. Cyment, A. ; " Aspect-oriented weaving and the .NET common language runtime", in IET Software, Vol. 1(6), IET, December 2007

Year 2006 : 5 citations

 Joon S. Park, G. Jayaprakash, J. Giordano, "Component Integrity Check and Recovery Against Malicious Codes", in Proc. of the 20th IEEE International Conference on Advanced Information Networking and Applications (AINA'06), IEEE Press, Vienna, Austria, April 2006

 M. Lumpe, "Using Metadata Transformations to Integrate Class Extensions in an Existing Class Hierarchy", in Proceedings of Fourth ASIAN Symposium on Programming Languages and Systems (APLAS 2006), Naoki Kobayashi (Ed.), LNCS 4279, Springer, Sydney, Australia, November 2006

 Markus Lumpe; "Using Metadata Transformations as a Means to Integrate Class Extensions in an Existing Class Hierarchy", Technical Report #0602, Iowa State University, March 2006

 David Durand, "Gestion de la Qualité de Service dans les Applications Réparties sur Bus Middleware Orientés Objet -- Approche Dirigée par les Modèles.", PhD Thesis, Université de Picardie Jules Verne, November 2006.

 J. S. Park, T.A. Suresh, G. An, and J. Giordano, "A Framework of Multiple-Aspect Component-Testing for Trusted Collaboration in Mission-Critical Systems", in Proceeding of the International Conference on Collaborative Computing: Networking, Applications and Worksharing, CollaborateCom 2006, pp.1-7, 17-20 Nov. 2006.