skip to main content
10.1145/1066677.1066967acmconferencesArticle/Chapter ViewAbstractPublication PagessacConference Proceedingsconference-collections
Article

RAIL: code instrumentation for .NET

Published: 13 March 2005 Publication History

Abstract

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.

References

[1]
Lian, S., and Bracha, G. "Dynamic Class Loading in the Java Virtual Machine". In Proceedings of the Object-Oriented Programming Systems Languages and Applications (OOPSLA '98), ACM Press, Vancouver, Canada, 1998.]]
[2]
ECMA International. Standard ECMA-335 Common Language Infrastructure (CLI), ECMA Standard, 2003.]]
[3]
Binder, W., Hulaas, J., Villazón, A., and Vidal, R. "Portable Resource Control in Java: The J-SEAL2 Approach". In Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA-2001), ACM Press, Florida, USA, 2001.]]
[4]
Truyen, E., Robben, B., Vanhaute, B., Coninx, T., Joosen, W., and Verbaeten, P. "Portable Support for Transparent Thread Migration in Java". In Proceedings of the Joint Symposium on Agent Systems and Applications/Mobile Agents (ASA/MA '2000), Springer-Verlag, LNCS 1882, Zürich, Switzerland, 2000.]]
[5]
Chander, A., Mitchell, J., and Shin, I. "Mobile Code Security through Java Byte Code modification", 1999. Available at: http://theory.stanford.edu/~vganesh/project.html.]]
[6]
Larus, J. EEL - An Executable Editing Library, University of Wisconsin, Madison, U.S.A., 1996. Available at: http://www.cs.wisc.edu/~larus/eel.html.]]
[7]
Dahm, M. "Byte Code Engineering". In JIT '99 - Java-Informations-Tage, Informatik Aktuell, Springer-Verlag, Dusseldorf, Germany, September 1999. ISBN 3-540-66464-5.]]
[8]
Cohen, G. A., Chase, J. S., and Kaminsky, D. L." Automatic Program Transformation with JOIE". In Proceedings of the USENIX 1998 Annual Technical Conference, New Orleans, Louisiana, USA, 1998.]]
[9]
Apache Software Foundation, BCEL Projects, Apache Software Foundation, 2003. Available at: http://jakarta.apache.org/bcel/projects.html.]]
[10]
White, A. A. SERP: Overview, 2002. Available at: http://serp.sourceforge.net.]]
[11]
Keller, R., and Hölzle, U. "Binary Component Adaptation". In Proceedings of the European Conference on Object-Oriented Programming (ECOOP '98), Springer-Verlag, LNCS 1445, Brussels, Belgium, July 1998.]]
[12]
Lee, H., and Zom, B. G. "BIT: A Tool for Instrumenting Java Bytecodes". In Proceedings of the USENIX Symposium on Internet Technologies and Systems, Monterey, California, USA, December 1997.]]
[13]
Chiba, S. "Load-Time Structural Reflection in Java". In Proceedings of the European Conf. on Object-Oriented Programming (ECOOP '00), Springer-Verlag, LNCS 1850, Sophia Antipolis and Cannes, France, June 2000.]]
[14]
Kniesel, G., Costanza, P. and Austermann, M. "JMangler - A Framework for Load-Time Transformation of Java Class Files". In IEEE Workshop on Source Code Analysis and Manipulation (SCAM), November 2001.]]
[15]
Elrad, T., Filman, R. E., and Bader, A. "Aspect-Oriented Programming". In Communications of the ACM, ACM Press, New York, New York, USA, October 2001, Vol. 44 (10), pp. 29--32. ISSN 0001--0782.]]
[16]
Lam, J. "Cross-Language Load-Time Aspect Weaving on Microsoft's Common Language Runtime", Demonstration at the 1st International Conference on Aspect-Oriented Software Development (AOSD2002), University of Twente Enschede, The Netherlands, 2002.]]
[17]
Lafferty, D., and Cahill, V. "Language-Independent Aspect-Oriented Programming". In Proceedings of the 18th ACM SIGPLAN conference on Object-oriented programming (OOPSLA 2003), ACM Press, Anaheim, California, USA, October 2003.]]
[18]
Cisternino, A. CLIFileReader Library, University of Pisa, Pisa, Italy, February 2004. Available at: http://dotnet.di.unipi.it/MultipleContentView.aspx?code=103]]
[19]
Ferber, J. "Computational Reflection in Class Based Object-Oriented Languages". In Proceedings of the 4th ACM Conference on Object-Oriented Programming Systems. Languages and Applications (OOPSLA '89), ACM Press, New Orleans, Louisiana. October 1989.]]
[20]
Malenfant, J., Dony, C. and Cointe, P. "Behavioral Reflection in a Prototype-Based Language". In Workshop on Reflection and Meta-Level Architectures (IMSA '92), Tokyo, 1992.]]
[21]
Syme, D. "ILX: Extending the .NET Common IL for Functional Language Interoperability", Microsoft Research, Cambridge, September 2001. Available at: http://research.microsoft.com/projects/ilx.]]
[22]
Chaban, S. Mono.PEToolkit. Mono Project. Novell, Inc. 2004. Available at: http://www.go-mono.com.]]
[23]
Gamma, E., Vlissides, J., Johnson, R., and Helm, R., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Pub Co, October 1994. ISBN: 0-201-63361-2.]]
[24]
Dependable Systems Group of the University of Coimbra, RAIL project, CISUC, 2004. Available at: http://rail.dei.uc.pt.]]

Cited By

View all
  • (2021)Exploring Exception Handling Mechanism In Android Development2021 5th International Symposium on Multidisciplinary Studies and Innovative Technologies (ISMSIT)10.1109/ISMSIT52890.2021.9604572(678-683)Online publication date: 21-Oct-2021
  • (2007)Exception handlingProceedings of the 21st European conference on Object-Oriented Programming10.5555/2394758.2394770(151-175)Online publication date: 30-Jul-2007
  • (2007)A Static Analysis Framework For Detecting SQL Injection VulnerabilitiesProceedings of the 31st Annual International Computer Software and Applications Conference - Volume 0110.1109/COMPSAC.2007.43(87-96)Online publication date: 24-Jul-2007
  • Show More Cited By

Index Terms

  1. RAIL: code instrumentation for .NET

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    SAC '05: Proceedings of the 2005 ACM symposium on Applied computing
    March 2005
    1814 pages
    ISBN:1581139640
    DOI:10.1145/1066677
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 13 March 2005

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. .NET platform
    2. code instrumentation
    3. runtime

    Qualifiers

    • Article

    Conference

    SAC05
    Sponsor:
    SAC05: The 2005 ACM Symposium on Applied Computing
    March 13 - 17, 2005
    New Mexico, Santa Fe

    Acceptance Rates

    Overall Acceptance Rate 1,650 of 6,669 submissions, 25%

    Upcoming Conference

    SAC '25
    The 40th ACM/SIGAPP Symposium on Applied Computing
    March 31 - April 4, 2025
    Catania , Italy

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 15 Feb 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2021)Exploring Exception Handling Mechanism In Android Development2021 5th International Symposium on Multidisciplinary Studies and Innovative Technologies (ISMSIT)10.1109/ISMSIT52890.2021.9604572(678-683)Online publication date: 21-Oct-2021
    • (2007)Exception handlingProceedings of the 21st European conference on Object-Oriented Programming10.5555/2394758.2394770(151-175)Online publication date: 30-Jul-2007
    • (2007)A Static Analysis Framework For Detecting SQL Injection VulnerabilitiesProceedings of the 31st Annual International Computer Software and Applications Conference - Volume 0110.1109/COMPSAC.2007.43(87-96)Online publication date: 24-Jul-2007
    • (2006)Using metadata transformations to integrate class extensions in an existing class hierarchyProceedings of the 4th Asian conference on Programming Languages and Systems10.1007/11924661_18(290-306)Online publication date: 8-Nov-2006

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media