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
- The MBEL project is supported by a grant from the Microsoft Corporation granted to
Dr. Christian Collberg at
the University of Arizona.
- Much of the API for MBEL is modelled after the
Byte Code Engineering Library (BCEL);
specifically the classes and methods for manipulating MSIL instructions, such as InstructionList
and InstructionHandle.
- The MBEL project is a child of the SandMark project,
which is a suite of tools for code obfuscation, software watermarking, and tamper-proofing.