A packer that compresses and encrypts .NET assemblies, storing payloads within PE file structures.
Origami is a packer tool that compresses and encrypts .NET assemblies, embedding them as payloads within Portable Executable (PE) files. It creates a stub module with a runtime loader to extract and execute the original assembly, manipulating PE structures like the debug directory or custom sections for data storage. This solves problems like reducing executable size, obfuscating code to deter reverse engineering, and embedding resources directly into binaries.
.NET developers and security engineers needing to pack, compress, or obfuscate assemblies for deployment, protection, or stealthy embedding in applications.
Developers choose Origami for its efficient PE format abuse, direct pointer access that avoids runtime overhead, and support for modern .NET Core and Costura, offering a lightweight, dependency-free alternative to commercial packers.
Packer compressing .net assemblies, (ab)using the PE format for data storage
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Stores payloads stealthily in PE debug directory or custom sections, avoiding external dependencies as emphasized in the README's focus on minimalism and format abuse.
Loader uses a VirtualAddress pointer to payload location, eliminating PE header traversal at runtime for better performance, as described in the how-it-works section.
Supports .NET Core assemblies, expanding compatibility beyond traditional .NET Framework, noted in the version 2 improvements from the README.
Integrates with Costura for embedding dependencies, streamlining deployment in packed assemblies, mentioned as a key feature for dependency handling.
The blog post explaining stub code is based on an older release, with an updated version pending, making it harder for users to understand the current implementation, as admitted in the README.
Offers only two storage modes (-dbg and -pes), lacking options for advanced encryption customization or anti-debugging features compared to commercial packers.
Relies on AsmResolver for module building, which could introduce compatibility issues or bugs if this external dependency is not actively maintained, as listed in the dependencies.