Krypton is a
.NET Reactor-oriented
devirtualizer: it tries to rebuild virtualized methods back into normal IL and produce a
runnable devirtualized binary.
This is not a project I started from zero. It is based on the original work by
PeterG75:
https://github.com/PeterG75/Krypton
My repo is a continuation fork: I modernized the codebase, extended the pipeline, and added tooling/tests on top of that foundation.
My fork (source)
https://github.com/dawwinci/krypton-devirtualizer
Highlights in this fork
- Targets .NET 8 and updated dependencies (e.g. AsmResolver).
- Refactored opcode-mapping into clearer stages (discovery, scoring, pruning, semantic repair, etc.).
- Semantic validation and stack-related helpers to reduce unsafe mappings.
- Payload / signature / profile-style structure in Core for easier extension.
- Krypton.Tests plus extra tools/ utilities (e.g. StringOracle, updates to existing tools).
- README documents build, run, env vars, and limitations.
Build / run
See the README on GitHub, typical flow is build with the provided script or dotnet, then run Krypton against an input assembly.
P.S. I’ve done some testing using challenges / samples (big thanks to everyone who posts those). The project is still very much a WIP, and there’s a lot left to improve. Forks, patches, and experiments are all welcome—feel free to change whatever you need. I’m not sure how often I’ll ship updates, but the repository will stay public.