MBEL: The Microsoft Bytecode Engineering Library
Principal programmer: Michael Stepp


Introduction
     With the release of Microsoft's .NET platform, new tools must be developed to manipulate .NET executables. MBEL is one such tool that allows the user to parse, create, edit, and rewrite .NET files with a convenient object-oriented API. MBEL is implemented completely in the Java programming language, which facilitates portability across different systems. The design and function of MBEL closely resembles that of the Byte Code Engineering Library (BCEL), which is a similar tool for editing Java class files. The objects defined in MBEL closely resemble the metadata structures defined in the ECMA-335 specification; such as Module, TypeDef, TypeRef, Method, Field, etc. This allows the user to have a standard vernacular for discussing .NET-related issues with others who may know about .NET modules but have no experience with MBEL. It also allows users who already know about .NET modules to use the MBEL system more easily and be able to understand the organization of classes within MBEL. Users need have no specific knowledge of the layout of a .NET module or its constituent parts, as those aspects are handled automatically by MBEL. Among the many uses of MBEL are code analysis, optimization, obfuscation, and watermarking.

Acknowledgments