Red Gate's .NET obfuscator

SmartAssembly starts at
per production build machine

Protect your .NET code and IP with SmartAssembly

.NET applications can be easy to disassemble if they haven't been obfuscated. SmartAssembly is an obfuscator that helps protect your application against reverse-engineering or modification, by making it difficult for a third-party to access your source code. (Please note that like any obfuscator, SmartAssembly cannot stop someone cracking your software if they are determined to do so. However it can add a barrier of protection instead of providing the source code on a plate.)

If your entire business rests on the IP embodied in your software or you don't want your C# or VB.NET code exposed internationally, then obfuscating your code becomes a necessity, not a luxury.

Before obfuscation Before obfuscation After obfuscation After obfuscation

With SmartAssembly, you get a comprehensive set of obfuscation features, including name mangling, control flow obfuscation, strings encoding, reference dynamic proxy and declarative obfuscation. It takes 5 minutes to download and install, so why not try it on your own application now:

A great way to take your .NET application to the next level.

Scott Hanselman, .NET guru and author

Knowing the frequency of problems (especially immediately after a release) is extremely helpful in prioritizing & triaging bugs that are reported internally. Additionally, by having the context of where those errors occurred, including debugging information, really gives you that leap forward to start troubleshooting and diagnosing the issue.
Ed Blankenship, MVP

Not only will it make you as a developer happier and your life easier, but it will make the customer happier and less frustrated.
Bill Gower, Software Developer, Blogger

I've deployed Automated Error Reporting now for one release and I'm already seeing the benefits. I can fix bugs which might never have got my attention before. I really like it a lot!
Stefan Koell, MVP

It is the most effective obfuscation, optimization, and all-around compilation improvement tool we've come across to date.
John Cioni, Fabsoft

Read more... Collapse

3 ways SmartAssembly will improve your software


.NET applications can be easy to disassemble if they haven't been obfuscated, which can be a problem if you've invested time, effort, and money in your code. Obfuscating your code is easy to do and adds a barrier of protection against reverse-engineering and modification.

Multiple forms of Obfuscation and Optimization

Code Obfuscation makes your application hard to reverse-engineer, removes non-useful code, and compresses dependencies, protecting and compacting your application with a minimum of fuss.

Key features:

  • Name mangling
    Changes the names of methods and fields to make it hard to understand their purpose.
  • Control flow obfuscation
    Converts the code inside methods to 'spaghetti code' to make it difficult to see how the application works.
  • References dynamic proxy
    Creates a proxy for calls to methods outside of your assembly to make it hard to find external calls.

  • Strings encoding
    Encodes the strings used in your software to hide such information as passwords and SQL queries.

  • Resources compression and encryption
    Compresses and encrypts managed resources to make them hard to understand, and to reduce the size of the assembly.

  • Pruning
    Removes non-useful metadata to make the code harder to reverse-engineer, reduce the size of the assembly, and improve loading time.

  • Dependencies merging
    Takes all the DLLs and merges dependencies into the main assembly, so you don't have to load lots of DLL files, and so that they can also be obfuscated.

  • Dependencies compression and embedding
    Compresses and embeds your dependencies into your main assembly, simplifying the deployment of your software and reducing the size of your program.

  • Method parent obfuscation
    Moves methods in your code by changing the class they are in, making it harder to understand how methods and classes relate to each other.

  • Strong name signing with tamper protection
    Signs your assembly and helps to protect it against modification (the additional tamper protection is not available in the Standard edition).

  • Declarative obfuscation
    Excludes a member from obfuscation using custom attributes directly in your code.


SmartAssembly decodes obfuscated stack traces and generates .pdb files containing debugging information. This enables you to debug your assembly into your IDE, and get the full stack trace when an exception occurs. To top it off, SmartAssembly even helps to ensure that you're automatically releasing unneeded memory.

Integration and Support

Obfuscation can be integrated into build processes using MS Build or command-line, and supports .NET 2.0 to 4.5, Compact Framework 2.0 to 3.5, Silverlight 2.0 to 5.0, XNA, and Windows Phone 7, with some exceptions – see PDF for details.

Automated error reporting and merging DLLs

SmartAssembly can also help discover bugs with automated error reporting and merge DLLs into your main assembly.

Automated error reporting

Only one thing's worse than finding out your software has bugs: never finding out.

Most users won't bother to report bugs: it's tricky and technically challenging to remember and relate the details. It would be easier for everyone if you let your users just give you the whole story in one quick click, wouldn't it?

Automated Error Reporting is an exception handling mechanism that automatically and silently collects detailed information when errors occur. Although highly customizable, a typical error report consists of a full stack trace and details about the exception context (e.g. values of all the local variables).

The user just has to click "Send error reports" – no painful back and forth to get all the details. It's all there.

How Automated Error Reporting Works Diagram

There are two main circumstances where Automated Error Reporting is particularly useful:

  • In the pre-release phase (e.g. beta testing), when you want lots of early user feedback to help you ship a stable application.
  • In post-release maintenance, when you want to streamline and speed up the process of debugging and fixing your software.

What are the benefits of Automated Error Reporting?

  • Configuring and adding exception handling to your application takes seconds, involves very few changes to your code, yet gives you access to stacks of valuable feedback.
  • No more time-consuming email exchanges to get all the necessary details. Your end-users can report unhandled exceptions at the click of a button, meaning you can fix bugs faster.
  • You get continuous data on which unhandled exceptions are most recurrent, helping you prioritize the bugs which affect the most end-users.
  • You can lower support costs by identifying and fixing the issues your end-users are actually experiencing.

Using the SDK, you can also package any data you want with the exception report, e.g. a log file or a screenshot taken at the time of the crash. You can even customize your exception handling dialog and ask the user for more information, or contact details so you can contact them when a fix is released.

If you track bugs with JIRA, SmartAssembly Sync for JIRA can save you even more time during the error-fixing process. It moves error reports across to your bug-tracking system automatically and even groups duplicate reports together. Find out more on the JIRA blog.

And if you're using SmartAssembly's obfuscation functionality in your development, we've got  you covered – SmartAssembly can decode obfuscated stack traces.

Key features:

  • Range of standard templates
    Send error reports with or without prompting the end-user.

  • Custom templates (available from the SDK)
    Gives you full control over the dialog box displayed to end-users when an exception occurs.

  • Report categorization
    Categorize reports to quickly see the most common errors your users experience.

  • Shared exception reports
    View the exception reports for applications built by any developer or build system in your organization.

  • System information always sent
    The version of Windows, the .NET version, and a list of loaded assemblies are sent with the stack trace.

  • Attach files to error reports†
    Log files, screenshots, and any other type of file can be attached to error reports.

  • Collect the end-user's email address
    Impress your customers by telling them when the problem has been fixed.

  • Secure
    Your error reports are encrypted while stored in the web service and are deleted from the server when you download them.

  • Web service hosted by Red Gate*
    No complicated installation because Red Gate hosts the web service that error reports are sent to.

  • Custom web service†
    Run the web service yourself for maximum flexibility.

* Access to the error reporting web service (for downloading error reports) is enabled by adding a Support & Upgrades package to your purchase. We offer customers the opportunity to renew their Support contract one month before it expires.

Custom templates, attaching files, and the custom web service are only available with SmartAssembly Pro (part of the SDK package).

Integration and Support

Addition of Automated Error Reporting functionality can be integrated into build processes using MS Build or command-line, and supports .NET 1.1 to 4.0, Silverlight 2.0 to 4.0, XNA, and Windows Phone 7, with some exceptions – see PDF for details.

Obfuscation and merging DLLs

SmartAssembly can also help obfuscate your software and merge DLLs into your main assembly.

Merging DLLs

Compiling .NET code often results in multiple assembly files being created, including satellite DLLs, all of which are required for the program to run. While this is a non-issue during development, when it comes to deployment it often means an unwanted stage of users having to unzip files, or additional steps in the installer as DLLs are moved to specific places.

You can dramatically simplify your deployment process by using SmartAssembly to merge and embed the code from referenced DLLs into your main assembly.

Dependency Merging

  • Deploy your .NET application in one file
  • Improve the performance and protection of your software

Dependency merging takes all the DLLs and merges dependencies into the main assembly so you don't have to load lots of DLL files. When a dependency is merged, it becomes a part of the main assembly and the code from a merged dependency can therefore be obfuscated and pruned as well as code from the main assembly.

Dependencies Compression & Embedding

  • Facilitate your software deployment and maintenance
  • Reduce the size of your program

Dependencies compression and embedding allows referenced DLLs to be embedded into the main assembly as resources, instead of being merged into the main assembly's contents. This feature also compresses these resources and dynamically uncompresses them at runtime.

The difference between merging and embedding dependencies

The difference between merging and embedding dependencies

You can control SmartAssembly's dependency merging and dependencies compression and embedding through the command line, so it is easily integrated into the build process, providing simple, reliable merging of dependencies on every build.

Obfuscation and automated error reporting

SmartAssembly can also help obfuscate your software and discover bugs with automated error reporting.

Demo: Exploring error reports

Web Demo: Browse sample error reports (opens in a new window)Web Demo: Browse sample error reports (opens in a new window)

The demonstration below lets you explore error reports as you would in the SmartAssembly desktop UI. As you explore, you'll see real error reports received from our free SQL Search tool. You'll see how reports can be categorized, filtered, and flagged to make them easy to manage, particularly within a team environment.

Clicking on any exception will show the full report, including system information, a list of the loaded assemblies, as well as the entire stack trace, including the values of all local variables. Explore the demo to see what kind of information you could be receiving, watch the video introduction, or learn more about Automated Error Reporting.

  • How to obfuscate your .NET code using SmartAssembly

    A 30 minute demonstration by Chris Allen, Technical Support Engineer for SmartAssembly, followed by a Q&A session.

    In this webinar, you will learn:

    • Why you need to obfuscate your code.
    • How to use the standard protection features, i.e. obfuscation, control flow obfuscation, and strings encoding.
    • How to test that the obfuscation has worked.
    • How to take advantage of the more advanced protection features, i.e. pruning, references dynamic proxy, and tamper proofing.

    Watch now

  • How to deliver high-quality software and exceptional support with automated error reporting

    SmartAssembly lead developer Alex Davies demonstrates how to use Automated Error Reporting to automatically gather comprehensive error reports from end-users whenever they hit a bug, and shows how you can use these reports to deliver faster bug fixes. The demo lasts 30 minutes, and is followed by a Q&A session.

    In this webinar, you will learn:

    • How to add Automated Error Reporting to your program.
    • How to use error reports to fix bugs.
    • How to customize the error report dialog.
    • How to get log files from your end-user's machine automatically.

    Watch now

Supported technologies

SmartAssembly can protect your Winforms, Silverlight, Windows Phone 7, ASP.NET applications and more. It can also be integrated into build processes using MS Build or the command-line.

See the PDF for details of all supported technologies.


SmartAssembly is licensed per machine, meaning per build server or per production machine (any machine you use to produce release builds) and is available in two editions (Standard and Pro).

Priority technical support is available via telephone and email when you buy a Support & Upgrades package for 25% of the product's purchase price. Learn more about purchasing options.

Got a question?

Our friendly customer service team is on hand to help.

0800 169 7433

Try SmartAssembly

Download a 14-day free trial, and start improving your .NET releases.