Rummage Features

Simple to use

Rummage is designed to work out-of-the box, without requiring you to make advanced decisions about specific code elements or configure obfuscations in ways that do not increase security. Start Rummage, select your assembly, click “Obfuscate now”.

Our philosophy is to keep it that way. There are enough complex obfuscators out there. Rummage might not have every feature ever conceived, but by limiting scope we can offer the best experience for most projects.

Quick and responsive support

Whatever question or problem arises while you use Rummage, we’ve got you covered. Whether a simple question or an advanced scenario, we’re here to discuss it with you and offer all the help we can. Just get in touch via our support page!

And if you just have something on your mind that you want to tell us, anonymously and without filling out any registration forms, you can do that any time and as often as you like at the quick feedback page.

First-class obfuscation

Rummage is simple on the outside but advanced under-the-hood. It is designed to be used without having to understand how our algorithms modify the program.

We do not believe in security through obscurity. Rummage permanently removes information which helps attackers from your program, and we want you to be sure of this. This is why we’ve explained what each of our algorithms does and why.

Automatic handling of reflection

Reflection is what makes obfuscation hard. Improper handling of reflection can severely limit the usefulness of an obfuscator. And it’s easy for reflection to slip in without you even knowing – for example, through the use of C#’s dynamic keyword.

All of Rummage algorithms take reflection into account. Rummage starts off by inferring which types and members are reflected upon and how, and subsequently makes use of this information to keep the transformations it applies safe.

Debug symbols support

Debug symbols (.PDB, or program database) are produced by compilers to help debug a program. These files contain additional information which maps information in the compiled binary to the program’s source code.

Rummage understands this information, and carries it over through the obfuscations. This enables stepping through the obfuscated binary in the debugger, and allows obtaining stack traces with source code line information.

Review obfuscation results

Rummage records exactly what it has and hasn’t changed. You may review this information to verify that particularly sensitive code got transformed according to your expectations.

Where Rummage was forced to skip a transformation, it tells you exactly why this occurred. For example, you might find that Rummage did not rename certain fields because the type is reflected on: Rummage will point you at the very method which performs the offending reflection call.

What Rummage doesn’t do

We like to be open and honest. We haven’t yet had the time to implement some of the features we want to see in Rummage. So, lest Rummage disappoint you after you’ve installed it, here’s a list of things you might expect of Rummage that it won’t do just yet:

  • Promise 100% obfuscation. Rummage is designed to work with minimal guidance from the developer. When Rummage decides a type is used in a way that precludes renaming it, for example, overriding this decision may be difficult. Keep in mind, however, that nothing can make your program completely un-hackable. Rummage's job is to massively raise the bar on the time investment and skill level required of the hacker, while keeping your time investment to a minimum.
  • Automate running other tools or multiple obfuscations. Rummage is more suited to being part of a build process, using MSBuild or a similar system. Rummage GUI can be used to obfuscate a single assembly, but it is currently not possible to perform other steps as part of a one-click task, such as merging or re-signing the assembly. This will likely remain so for the near future.
  • Merge multiple assemblies into one. Our recommendation is to use ILMerge, which is free and has worked great for us, or ILRepack, which is also free.
  • Obfuscate resources. Scheduled for Rummage 4.0+ release.
  • Obfuscate BAML in WPF applications. Scheduled for Rummage 4.0+ release.

Moreover, Rummage strives to be simple to use, and features that go against this don’t make it into Rummage. Some features common in obfuscators make very little sense as far as the level of protection goes: do you really need a large and complex screen to define exactly which letters to use in your renamed symbols?