AsmResolver
AsmResolver is a Portable Executable (PE) inspection library that is able to read, modify and write executable files. This includes .NET modules as well as native images. The library exposes high-level representations of the PE, while still allowing the user to access low-level structures.
AsmResolver is released under the MIT license.
Main Features
AsmResolver has a lot of features. Below is a non-exhaustive list of the highlights:
- Create, read, modify, write and patch PE files.
- Full access to sections, data directories and their interpretations.
- Rich support for .NET modules with an intuitive API similar to
System.Reflection
.- Managed, native and dynamic method body support.
- Easy metadata importing and cloning.
- Managed resource file serializers and deserializers.
- Support for AppHost / SingleFileHost bundles.
- Read PDB symbols.
- Fully managed cross-platform API (No DIA or similar required).
- .NET Standard 2.0 compatible.
- Documented.
- Unit tested.
Documentation
Binaries
Stable Builds:
Nightly Builds:
Branch | Build status |
---|---|
master | |
development |
Compiling
The solution can be built using the .NET SDK or an IDE that works with it (e.g., Visual Studio and JetBrains Rider). The main packages target LTS versions of various .NET runtimes (.NET Standard 2.0, .NET Core 3.1 and .NET 6.0).
To build the project from the command line, use:
$ dotnet build
To run all tests, use:
$ dotnet test
For running the tests successfully, you will need to have various versions of .NET installed (ranging from .NET Framework to .NET Core 3.1 and .NET 5+), as the unit tests verify reading binaries targeting various .NET runtimes.
Contributing
- See CONTRIBUTING.md.
Support
Acknowledgments
AsmResolver started as a hobby project but has grown into a community project with various contributors. Without these people, AsmResolver would not have been where it is today!
-
Special thanks to all the people who contributed directly with code commits.
-
Another big thank you to all the people that suggested new features, provided feedback on the API design, have done extensive testing, and/or reported bugs on the issue board, by e-mail, or through DMs.
If you feel you have been under-represented in these acknowledgments, feel free to reach out.