by Red Gate Software - Product Type: Application / Developer Application
SmartAssembly by Red Gate Software
URLs: smartassembly, red-gate, red gate, redgate
.NET obfuscator and automated error reporting. SmartAssembly is a software protection and improvement tool designed to help .NET developers to produce better quality software. This all-round solution will obfuscate and protect your .NET code, optimize your .NET assemblies for better deployment, minimize distribution size, increase performance, and add powerful error-reporting and debugging capabilities to your application.
First-rate .NET obfuscator: obfuscate your .NET code and protect your application
Automated error reporting: determine how stable your software is, and receive information on the state of your program when it crashes
Optimize your .NET assemblies for better deployment
Worried about other people reverse-engineering your software? Obfuscate and protect your code before releasing it into the wild.
Why do you need to obfuscate your code?
If you've invested time, effort and money in your code, it is advisable to protect it by making it difficult to access. Obfuscating your code will protect your program and intellectual property against reverse-engineering, cracking and modification.
Obfuscating your code with SmartAssembly
SmartAssembly offers a large range of obfuscation features. You can choose to use only one or two, or all of them, depending on your circumstances.
Pruning - Pruning automatically scans your software and removes any code that is not essential. This includes removing non-useful metadata, such as the names of events, properties, and method parameters that would give someone else clues about what particular types and methods are for.
Obfuscation - Obfuscation changes the name of your classes and methods to unreadable characters, making it more difficult for other people to understand your code.
Control Flow Obfuscation - Control Flow Obfuscation changes the code inside your methods, converting it into a complex and tangled control structure (spaghetti code). After Control Flow Obfuscation, you can execute your application in exactly the same way as before, but it is now very difficult for anyone else to analyze your code, and almost impossible for a decompiler to recreate the original source code.
Reference Dynamic Proxy - This unique obfuscation feature allows you to hide most of the calls to external methods, properties, or fields in your code, by replacing them with calls to the proxy. This makes your program much harder to crack, because it makes it difficult for anyone to find calls that tend to offer inadvertant clues about where to get started (such as a trial expiry dialog).
Resources Compression and Encryption - This feature compresses and encrypts your managed resources. This reduces the size of the assembly and adds further protection to your resources.
Strings Encoding - Managed software stores all strings in one place and in a clear structure. These strings can enable a cracker to understand your code, or can even reveal important information, such as passwords, SQL requests, serial numbers, or login information. Strings Encoding protects the strings by encrypting them.
Automated Error Reporting
Don't know when your application crashes, and why? SmartAssembly's exception reporting mechanism provides you with a complete state of your program whenever it crashes.
Getting information about exceptions from users is a nightmare.
Most end-users don't report problems and even your best efforts can't address problems you're not informed of. And of the very few end-users who do report the problem (via email or a forum), most are not technically literate, so they can't provide you with precise information about their system or browser, or give an accurate description of the problem they encountered. This makes reproducing the problem and solving it quickly difficult and time-consuming.
How can SmartAssembly's error reporting system help?
SmartAssembly offers an error reporting mechanism that provides you with a complete state of your program whenever it crashes. You get a full stack trace, along with the values of all variables when the crash happened.
Discover the volume of crashes your end-users experience. For every bug reported, there will be ten times as many that you haven't heard of
Get a complete state of your program when it crashed (not just the stack trace), including the values of variables when the crash happened – without having to go back and forth in inefficient email conversations with the end-user
Focus on fixing the high-priority issues first (most commonly encountered errors and most critical ones). And don't waste time fixing problems that are rarely encountered
Deliver a higher-spec product to market – on time
Red Gate can run the server for you, so you don't incur costs in setting up and maintaining your own server; or if you don't want to rely their our web-server and want to be 100% independent, they provide a Custom Web Server option
You can customize your exception reporting dialog and ask the user to type in more information, or his/her email address
You can package any data you want with the exception report (e.g. a screenshot at the time of the crash, or a log file)
It is easy to set up and you don't need to alter the target program: spend a few seconds configuring the error reporting functionality in the SmartAssembly UI, and it will output an assembly with error-reporting enabled
You could find out what errors your users are coming across by implementing your own error reporting mechanism into your application, but SmartAssembly offers a much cheaper alternative:
Red Gate can run the server, so you don't have to set up and maintain a server
Coding your own exception dialog would take days to get it right
You never know which variable to log until a crash happens, so if you were to build your own mechanism, you wouldn't get a comprehensive set of data. The results you get with SmartAssembly are much more detailed because it logs ALL of the variables
SmartAssembly's Error Reporting tool is therefore the most effective and efficient way to find out what errors your users are coming across; and by choosing to fix the most common errors, you can improve the quality of your software, thus enhancing your professional image and your credibility.
Allows you to process assemblies for release to end-users••
Name mangling, control flow obfuscation, strings encoding, references dynamic proxy, pruning, re-signing strong named assemblies, declarative obfuscation, obfuscation of satellite DLLs, sign assemblies•••
Tamper Protection ••
Application Size Reduction and Speed ImprovementStandardProDev
Pruning, resource sompression and encryption, dependencies compression and embedding, dependencies merging, declarative pruning
Automated Error ReportingStandardProDev
Jump to source code from the stack trace•••
Custom web service
SDK to access your exception reports programmatically and to manually pass exceptions to SmartAssembly if you wish to ••
Custom templates for customizing the error reporting dialog and capturing additional data with exception reports (e.g. a log file)
Store error reports in SQL Server, allowing you to share the reports with colleagues ••
Store error reports in a local .mdb file•••
Feature Usage ReportingStandardProDev
Feature Usage Reporting
Export reports to CSV•••
Custom web service
Custom templates for customizing the dialog box that your end-users see when they are asked to consent to feature usage reporting ••
Store feature usage reports in SQL Server, allowing you to share the reports with colleagues ••
Store feature usage reports in a local .mdb file•••
What's new in SmartAssembly 6.7
This version adds improved support for WPF. You can now merge dependencies containing WPF and, in some cases, the WPF code will be obfuscated where it would not have been obfuscated in previous versions.
SmartAssembly 6.7 also contains the following bug-fixes:
Attributes on events were discarded after merging
Delegate types were not pruned
The ExcludePublicMembers option for Name Mangling did not work with merged assemblies
Stack trace decoding could fail with similarly-named types
Note: If you previously used ExcludePublicMembers attribute, it has been replaced by the new KeepPublicMembersAccessible attribute.
What's new in SmartAssembly 6.6
This version adds a new form of obfuscation, called Method Parent Obfuscation (SmartAssembly 6.6 Professional and Developer only).
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. Please note that Method Parent Obfuscation may not work with all types of assemblies, so if you have trouble processing an assembly with Method Parent Obfuscation enabled, you should try again without Method Parent Obfuscation.
Red Gate have added a new Control Flow Obfuscation mode called 'Unverifiable'. This offers enhanced control flow obfuscation for desktop applications that will have full trust.
SmartAssembly 6.6 now supports Silverlight 5.
SmartAssembly 6.6 also contains numerous bug-fixes, including:
High memory usage caused OutOfMemory Exceptions with large assemblies
When pruning was enabled, MethodImpls of overridden pruned methods were not pruned
With all SmartAssembly features disabled, custom attributes were not included after processing
SmartAssembly crashed when an invalid exclusion was specified
SmartAssembly 6.6.1 fixes the following bugs:
Enabling Method Parent Obfuscation could cause the error reporting stack trace to have the wrong type names
SmartAssembly crashed with a serializable type in a Silverlight assembly
attributes were pruned, even when the DoNotPruneType attribute is present
SmartAssembly worked incorrectly when a referenced assembly was signed with a full public key, rather than the token
In addition, Feature usage reporting will now report Amazon EC2 and Windows Azure in the Platform data.
SmartAssembly 6.6.2 fixes the following bugs:
Custom error reporting and custom feature usage reporting dialogs based on the samples in the SDK failed to work when directly referenced.
Parameters on obfuscated methods were not obfuscated.
With advanced obfuscation enabled, an assembly with a class implementing two different implementations of the same generic interface would crash.
SmartAssembly 6.6.3 fixes the following bugs:
Improved memory usage when building very large assemblies with error reporting
Improved memory usage when building very large assemblies with PDB files
An issue in the automatic Check for Updates client
SmartAssembly 6.6.4 fixes the following bugs:
In previous versions of SmartAssembly, you could leave dependencies unmerged, which needed to be merged.
FlagsAttribute was pruned
Syncfusion assemblies could not be merged
Assemblies where <Module> is not empty could not be merged
Microsoft.Ink could not be merged
OutOfMemory exceptions with 64bit-only assemblies
Red Gate have also improved support for Windows Phone 7.1 and Windows Phone 7.5, SQL CLR assemblies and assemblies using PostSharp.
This version contains a substantially rewritten engine, which will be faster for some users (and with little speed change for most users).
Other changes are:
Tested with Windows Phone 7.1 RTM
Tested with Silverlight 5 RC
New 'Improve performance' option when using Automated Error Reporting
Improved command line options
Logging to help diagnose errors
Map files are no longer deleted automatically if the assembly was not marked as released
Fixed a bug where some code was not pruned when it could be.
If you are an existing SmartAssembly user, you may need to add new exclusions to your code if the new, more aggressive, pruning causes problems.
Fixed a bug where some F# public interfaces were not name obfuscated when they could be.
If you are an existing SmartAssembly user, and you write F# code, you may need to add new exclusions to public interfaces if the new name obfuscation causes problems.
Minor bug fixes
Requires .NET 3.5 to run
No longer supports main assemblies targeting .NET 1.1 (but dependencies can target .NET 1.x)
Red Gate have also removed the 'Add incorrect metadata' option because it no longer offers a reasonable amount of protection.
SmartAssembly 6.5 is a recommended update for all users of SmartAssembly 6.1 and 6.2, except for customers using SmartAssembly with .NET 1.1 main assemblies.
What's new in SmartAssembly 6.2
Version 6.2 adds a set of sample error reports for new users of SmartAssembly. The sample reports are shown when you click View error reports. Please note that existing users do not receive the sample error reports
There are also a small number of minor bug fixes related to WPF support, the References Dynamic Proxy and handling timezones in feature usage reports
SmartAssembly 6.2 is not supplied via the Check for Updates mechanism to customers who already have SmartAssembly 6.1. There is no need to upgrade SmartAssembly 6.1 to this version
What's new in SmartAssembly 6.1
This minor version release includes a small number of bug fixes:
If your assembly has a file alignment other than 512 bytes, SmartAssembly will now use the same file alignment when it builds your application
If a custom feature usage reporting template is selected, but the template does not exist, the build will now fail
If a custom feature usage reporting template using .NET 4 is selected, but the application is compiled with .NET 2, the build will now fail
Fixed the SerializationException encountered when using error reporting with code that uses remoting
Fixed ‘Interface not found’ errors when using tamper protection on assemblies which have an interface. (Interfaces no longer have tamper protection applied.)
SmartAssembly version 6.1 also removes the redundant SSL web service connection option in the web service settings.
Please note that this is only a change in the user interface, not a change in the available features. Since SmartAssembly version 5.0, all connections with the default web service have been over HTTP (though the error reports themselves are encrypted). To use HTTPS for error and feature usage reports, you must use a custom web service.
SmartAssembly 6.1 is a recommended update for all users of SmartAssembly 6.0.
What's new in SmartAssembly 6.0
Feature Usage Reporting
New Feature Usage Reporting: the functionality is simple and lightweight to start off with, but it can already automatically report information about the number of times various features were used in your application, and system information, such as the end user's OS and the highest version of .NET they have installed.
Automated Error Reporting
Jump to the source code from the error report stack trace, for even faster debugging.
Added support for error reporting in Windows Phone 7.
Tamper protection for strong name signing that renders your assembly unusable and causes your application to crash, should anyone tamper or change your assembly.
Improved Control Flow Obfuscation by adding some extra branches to the code to confuse block analysis (a decompilation step).
Support for Xbox XNA version 4.
SmartAssembly 5.5 adds an extended range of features in Silverlight applications, simplified processing of .xap files, and categorization of error reports.
.NET obfuscator and automated error reporting.
Pricing: SmartAssembly 6 Standard Edition 1 Server License, SmartAssembly 6 Standard Edition 5 Server License, SmartAssembly 6 Standard Edition 10 Server License, SmartAssembly 6 Standard Edition with 12 Months of Support and Upgrades 1 Server License, SmartAssembly 6 Standard Edition with 12 Months of Support and Upgrades 5 Server License, SmartAssembly 6 Standard Edition with 12 Months of Support and Upgrades 10 Server License, SmartAssembly 6 Standard Edition with 24 Months of Support and Upgrades 1 Server License, SmartAssembly 6 Standard Edition with 24 Months of Support and Upgrades 5 Server License, SmartAssembly 6 Standard Edition with 24 Months of Support and Upgrades 10 Server License, SmartAssembly 6 Standard Edition with 36 Months of Support and Upgrades 1 Server License, SmartAssembly 6 Standard Edition with 36 Months of Support and Upgrades 5 Server License, SmartAssembly 6 Standard Edition with 36 Months of Support and Upgrades 10 Server License, SmartAssembly 6 Standard Edition Renewal License - 12 Months of Support and Upgrades 1 Server Renewal License, SmartAssembly 6 Standard Edition Renewal License - 12 Months of Support and Upgrades 5 Server Renewal License, SmartAssembly 6 Standard Edition Renewal License - 12 Months of Support and Upgrades 10 Server Renewal License, SmartAssembly 6 Standard Edition Renewal License - 24 Months of Support and Upgrades 1 Server Renewal License, SmartAssembly 6 Standard Edition Renewal License - 24 Months of Support and Upgrades 5 Server Renewal License, SmartAssembly 6 Standard Edition Renewal License - 24 Months of Support and Upgrades 10 Server Renewal License, SmartAssembly 6 Standard Edition Renewal License - 36 Months of Support and Upgrades 1 Server Renewal License, SmartAssembly 6 Standard Edition Renewal License - 36 Months of Support and Upgrades 5 Server Renewal License, SmartAssembly 6 Standard Edition Renewal License - 36 Months of Support and Upgrades 10 Server Renewal License, SmartAssembly 6 Developer Edition 1 User License, SmartAssembly 6 Developer Edition 5 User License, SmartAssembly 6 Developer Edition 10 User License
Evals & Downloads: Read the SmartAssembly End User License Agreement, Download the SmartAssembly 6.7 evaluation on to your computer - Expires after 14 days
Operating System for Deployment: Windows 7, Windows Server 2008, Windows Vista, Windows XP, Windows Server 2003, Windows Phone 7.5, Windows Phone 7
Architecture of Product: 32Bit, 64Bit
Product Type: Application
Application Type: Developer Application
Compatible Containers: Microsoft Visual Studio 2008, Microsoft Visual Studio 2005, Microsoft Visual Basic 2008, Microsoft Visual Basic 2005, Microsoft Visual C++ 2008, Microsoft Visual C++ 2005, Microsoft Visual C# 2008, Microsoft Visual C# 2005, .NET Framework 4.0, .NET Framework 3.5, .NET Framework 3.0, .NET Framework 2.0, Silverlight 5, Silverlight 4, Silverlight 3
Keywords: smartassembly standard, smart assembly standard, smartassembly std
Red Gate Software Red-Gate RedGate
Code Obfuscation Obfuscate obfuscated
compression java, compression c#, compression library, compression c++, compression control, compression vb, compression class, compress library, compression delphi, compression component, compression unzip, compression activex, compression dll
Debugging debug debugs Testing Test Tests
Part numbers: PC-534706-671373 534706-671373 PC-534706-671375 534706-671375 PC-534706-671377 534706-671377 PC-534706-671337 534706-671337 PC-534706-671339 534706-671339 PC-534706-671341 534706-671341 PC-534706-671343 534706-671343 PC-534706-671345 534706-671345 PC-534706-671347 534706-671347 PC-534706-671349 534706-671349 PC-534706-671351 534706-671351 PC-534706-671353 534706-671353 PC-534706-671355 534706-671355 PC-534706-671357 534706-671357 PC-534706-671359 534706-671359 PC-534706-671361 534706-671361 PC-534706-671363 534706-671363 PC-534706-671365 534706-671365 PC-534706-671367 534706-671367 PC-534706-671369 534706-671369 PC-534706-671371 534706-671371 PC-534706-671379 534706-671379 PC-534706-671381 534706-671381 PC-534706-671383 534706-671383
Mfr. Part No: P89U10M0 P89U1M0 P89U5M0 P90U10M0 P90U10M12 P90U10M24 P90U10M36 P90U1M0 P90U1M12 P90U1M24 P90U1M36 P90U5M0 P90U5M12 P90U5M24 P90U5M36
Red Gate Software