Larkware banner
border

Review: {smartassembly} 2.0

{smartassembly} 2.0 Enterprise Edition, $799
Cachupa
Sal Island, Cabo Verde
http://www.smartassembly.com/index.aspx

{smartassembly} is an "assembly improvement and protection tool" that is designed to help you move painlessly through a whole bunch of release-time tasks for your .NET code. It works on .NET 1.0, 1.1, and 2.0 applications, and depending on what process you're already using, it's simple step-by-step interface could replace or augment several tools. I looked at version 1.0 when it was released; now they're out with version 2.0, so I've updated this review to match. Here's an overview of what {smartassembly} can do for you:

  • Merge dependencies with the main assembly, which cuts your deployment file list down, speeds up load time, and avoids any future versioning issues.
  • Scan your code to prune out dead and unused code. You can override this to preserve methods that you know are being called by reflection.
  • Obfuscate the code (you can override this on a method-by-method basis). The obfuscation uses nonprintable characters to rename types and lacks the customizability of high-end obfuscators but it's certainly a good start.
  • Munge the metadata in the code to make it more difficult for dissasemblers to reverse-engineer it.
  • Encode embedded strings to protect them from simple hex-dumping of the resulting assembly.
  • Add code to intercept unhandled exceptions and transmit them back via a hosted Web Service with summary reports. You get a one year subscription to the service as part of the purchase price.
  • Optimize memory use in the assembly.
  • Seal all possible classes in the assembly.
  • Strong name the assembly, generating a new key if necessary.

The whole process is as easy as filling out a set of options in an attractive wizard-like interface and then clicking "Build." I ran a couple of assemblies through a test copy, and didn't have any problems with the stuff that came out the other end; the resulting assemblies appear to have all the functionality of the originals, and have shrunk considerably in size (though frankly I don't worry all that much about compiled code size in these days of gazillion byte hard drives). {smartassembly} lives up to the promise of offering a simple way to clean up your assemblies. You can tweak the process a bit if you're using the Professional or Enterprise versions, which offer declarative obfuscation and pruning through attributes. For the most part, though, if you prefer to be able to tweak every step of the process this isn't the utility for you; there aren't a lot of options to set or detailed help files to read. Rather, the developers here have tried to decide what's best, provided simple explanations on the user interface, and left it at that.

In addition to declarative obfuscation and pruning, version 2.0 adds new memory management and anti-decompiler features, more information on exception reports, an easier to follow user interface, and support for Windows Vista and .NET 3.0. With the Enterprise Edition (starting with version 1.1), you can customize the exception reporting forms and get access to the exception reports database directly via SQL queries.

You can download a 20-day evaluation version from the company's Web site. In addition to the Enterprise Edition and the $599 Professional Edition, there's a $399 Standard Edition that does not include the exception reporting and stack trace decryption features. Overall, this is a nice utility for the tail end of your development cycle that keeps adding well thought out new features in each new release.

{smartassembly} screenshot  Click for larger screenshot

Mike GunderloyLarkware is the editor of Larkware, the daily .NET newspaper of record.

Published January 4, 2007