Skip to content

DmitryGaravsky/ILReader

Repository files navigation

CIL-Reader for Methods(e.g. dynamic) and Delegates

Common Intermediate Language reader, analyzer and visualizer tool.
Allows you to access CIL-instructions of .Net method's bodies.

Nuget Version

Core Library (ILReader.Core)

Provides a way to read and interprete CIL-bytes of methods and delegates bodies.

Usage:

var method = typeof(...).GetMethod(...); // or var method = delegate.Method; // or var method = (DynamicMethod)(/* create or get method */);

Get Reader:

IILReader GetReader(MethodBase method) { IILReaderConfiguration cfg = Configuration.Resolve(method); return reader = cfg.GetReader(method); }

Iterate instructions one-by-one:

foreach(IInstruction instruction in reader) { var opCode = instruction.OpCode object operand = instruction.Operand; int ILOffset = instruction.Offset; // ... }

Visualizer Library (ILReader.Visualizer)

Debugger Visualizer for Visual Studio. Provides a way to view CIL-bytes of methods and delegates bodies.

Usage:

Func<...> someFunc = ...; // Just use it while debugging

Analyzer Library (ILReader.Analyzer)

Provides a way to detect typical patterns in CIL-bytes.

Usage:

class Bar { public void Stub() { throw new NotImplementedException("Stub"); } }

Check whether or not the method's body match pattern:

var method = typeof(Bar).GetMethod("Stub"); var reader = GetReader(method); // use default pattern or create you own var pattern = Analyzer.NotImplemented.Instance; if (pattern.Match(reader)) { // do something }

Real usage

NuGet

To install ILReader.Core, run the following command in the Package Manager Console:

Install-Package ILReader.Core 

License

The ILReader.Core library is licensed under the MIT license.

Releases

No releases published

Packages

No packages published

Languages