{smartassembly} reviewed

Handling Unhandled Exceptions - The Right Way

One of {smartassembly}’s “more marketed” features is the unhandled exception handler. Confused? It does just what it’s name implies!

Everyone has seen the annoying pop-up messages that appear when an application crashes in Windows XP+. It claims it’s going to “inform Microsoft” and “let you know” when a solution is found. As developers, we’ve never been contacted by Microsoft (or even anyone claiming to be Microsoft) telling us our application crashed and asking us to fix it. So {smartassembly} lets you take matters into your own hands.

Instead of calling up Microsoft’s own error-reporting agent and just wasting bandwidth all around, {smartassembly} can configure your application to use its own servers to report unhandled exceptions. When you purchase a license key, you’re given an account on Cachupa server which accepts (any number of) exception reports and lets you see a log of all errors. And if you created a PDB debug file when you created your {smartassembly}-optimized program, you can use that to view a stack trace.

The {smartassembly}-optimized error-reporting client logs the exception with the remote server, and from your own PC you can use your {smartassembly} install to browse recent exceptions - just like an email client.

If you generated the PDB file (and no reason why you shouldn’t), you can use the combination of the stack trace, detailed bug reports (together with the platform and configuration) to fix just about anything.

While we haven’t encountered the need for this particular feature with EasyBCD and our other applications which generally don’t have many issues, but when they do fail they fail at a low-level (leaving the user helpless!) and don’t fire up exceptions, we can easily imagine circumstances under which this feature becomes absolutely essential - especially when dealing with millions of users running an uptime-critical application like a Instant Messaging client or a web server.

Pages: 1 2 3 4 5

Leave a Reply  •  About to Ask for Help?  •  Subscribe to Our Feed

17 Responses to “{smartassembly} reviewed”


  1. 1 Judah May 4th, 2007 at 10:20 pm

    My main complaint with obfuscators is that they kill working things. We have a large client/server architecture with .NET remoting in place to communicate between the 2. Obfuscators cannot change any of the contract calls between client/server, yet all of them crap out on this and force you do do “only metadata” obfuscation.

    Additionally, we have run into bad IL issues with Spices, DotFuscator, Salamander, and XenoCode. With Xenocode, the developers gave us some hotfixes that eventually solved the problem.

     But I wonder…is all this really worth it? What are we trying to protect? It seems to me the only thing we should be worried about protecting is connection strings, passwords, encryption keys, or activation/time bomb related code.

     Yes, it’s true that someone could reflect on the IL, generate functionally equivalent, although comment-less code, and build their own product from that. But honestly, who’s going to do that? The software would be unmaintainable — machine generated, no comments. Businesses would never in their right mind risk a lawsuit by stealing an entire codebase and calling it their own.

  2. 2 Computer Guru May 5th, 2007 at 4:43 am

    Hi Judah,

    Unfortunately, your perceptions of people are rather kind! We’ve had this done to us with our programs by other “companies” who don’t mind the extra drudge work so long as there is no thinking and innovating involved.

    I know exactly the problems you are talking about - the obfuscators just break the application. Unhandled exceptions, no sync, etc. That’s exactly what we experienced with both Spices and XenoCode. {smartassembly} worked for us though.

    I know how you feel. We shouldn’t have to protect our source code. It’s ours, the program and the source alike. No one should try to steal it, it’s too obvious. But unfortunately, the world isn’t filled with only good people. Give {smartassembly} a try, it’s a free trial download - I believe it may work well for you.

  3. 3 Harley May 25th, 2007 at 1:58 am

    Hm, seems SA is only for single assemblies. How about several assemblies, cross-obfuscation, tamper-proofing solutions (very urgent feature for us)? I love Spices.Obfuscator with Anonymizer and antiTampering (these thhigs really work for us), cross-obfuscation (I’ve 15 assemblies in project), that tool is really smarter than smart-assembly and offer real solution to protect big things.

    2 Judah: don’t afraid to contact to vendors to solve your problem. I had runned into some problems with spices obfuscator and received some useful recommendations relating to my assemblies protection that solved all my problems.
     

  4. 4 Computer Guru May 25th, 2007 at 3:53 am

    SA does have an option to obfuscate additional assemblies, at least in the version we tested.

    Spices ruined our app as well, it would hang before the Window was even created. I don’t have time to contact commercial vendors whose apps don’t work as advertised, that’s why I’m happy we chose {smartassembly} where we didn’t need to: it just worked.

  5. 5 Harley May 25th, 2007 at 7:39 pm

    Hm, but I’ve briefly compared SA with Spices.Obfuscator - assembly after SA is still easy to decompile (ILDASM, Spices.Decompiler, Reflector), many of members iare leaved from obfuscation (some internal  and private members not obfuscated, these are usual classes don’t excluded from obfuscation in single exe). Anyone can disassemble this app, make changes and assemble with ILASM with my own code - in other words, make workable copy of protected program, program is still has roundtrip vulnerabilty. You can be happy with SA, you can have no time to contact commercial vendors to take recommendations from experts/professional to REALLY protect your code, until hackers start to distribute your code. In other words - you happy because SA doesn’t ruined your app, isn’t it?

    I’ve tried a lot of obfuscators - dotfuscator, xenocode, SA, salamander, Spices.Obfuscator, native protection - Codeveil. They have their own advantages and disadvantages. It’s need to understand results of obfuscation, reasons of incorrect work of program after obfuscation (the main problem - serialization/reflection), what members should be obfuscated and excluded from obfuscaton, analyze results of obfuscation to understand real protection.

    BTW, I’ve tried EasyBCD - on startup this program shows AV exception, but continue to work, and after some clicks - View Settings (shows AV), Configure Boot - shows SA exception and crashes. Are you sure that SA doesn’t ruined your app?

  6. 6 Khatib Dec 13th, 2007 at 11:30 pm

    Unfortunately, all obfuscation companies are loosing some serious customers, simply because they do not release a simple document of guidelines for writing code that works with obfuscation. I had to go through all the pain of changing my code to make it obfuscatable. I wish i could have some time to write these guidelines myself one day. I know people who already shifted from .NET to other technologies like delphi and c++ just because of the missing the right connection between .NET and obfuscation.

  7. 7 Computer Guru Dec 14th, 2007 at 6:36 am

    Well, in my experience most of the small obfuscation companies (basically all but Preemptive and Salamander) will gladly allow you to send a program that won’t obfuscate, and send you a patched version of their product that works with it.

    As a sidenote: in {smartassembly} 2.2, the problem we experienced with 30-minute obfuscation times was fixed.

  8. 8 GV Apr 8th, 2008 at 1:42 pm

    I’m a customer of SA….and i think that SA is a good solution…in terms of moneyprotection…
    ok someone may say not the most unexploitable….
    but i think that his protection is enough for many software companies that don’t have a world-wide distribution, but a simple and more realistic pool of customers.
    many of us don’t have hackes that try to steal our super-formulas, in the worst case we can have people that try to duplicate the installation on another machine…without even know what they are doing…and for the “little-selfmade-pro-hacker-wannabe” that our software may ancounter SA seems really enough…(considering his price remember)

    The thing that SA REALLY NEED is cross-obfuscation!!!!! all the other things can go fine…
    Projects are very large and it is impossible to embed all in a single exe….what about upgrades???? what about maintenance in general??? if i want to change a single function in a library i need to REBUILD all the solution ?????

    SA is a good choice but REALLY cross-obfuscation is a thing that we can no longer ignore when writing reviews on obfuscators!!!!! reviews are for all not only for personal-use, single-little-exe’s programmers….the most part of customers of an obfuscator are software companies not peoples in their house!!!

  9. 9 Mahmoud Al-Qudsi Apr 8th, 2008 at 3:25 pm

    I fully agree with you. At the time when this article was written, we neglected to try {smartassembly} on anything larger than a single exe with multiple library dependencies.

    However, we’ve recently tried to obfuscate/optimize a much larger project with multiple executable files and share libraries between them all, and it was not a fun experience.

    If you obfuscate a library, it breaks the dependencies in the exe files. For each file you need optimized, you need a seperate project (one file is obfuscated per project).

    Hopefully future versions of {smartassembly} will feature improvements in the cross-obfuscation realm……..

  10. 10 Dan Jun 22nd, 2008 at 4:19 pm

    I had many issues implementing obfuscation. The main problem was that obfuscation breaks your code. As a result I’ve tried .NET code protection tools, CliSecure in particular worked very well for me. It’s very easy to use, just feed it with your assemblies and run it, and it doesn’t require any modifications or adjustements to your code like most obfuscation tool required.

  11. 11 Mahmoud Al-Qudsi Jun 22nd, 2008 at 4:23 pm

    Does it support cross-compilation? Because that’s the big thing that {smartassembly} is missing and no one else seems to do right.

  12. 12 Dan Jun 22nd, 2008 at 4:24 pm

    The main issue with obfuscation tools is that they often break your code. I had many issues with obfuscation and therefore decided to evaluate some .NET code protection tools. CliSecure, in particulr, worked very well for me. It’s very easy to use, just feed it with assemblies and let it secure your code. It doesn’t require any modification or adjustements like most obfuscation tools require.

    Dan.

  13. 13 Dan Jun 22nd, 2008 at 4:50 pm

    CliSecure is not an obfuscator, it’s a code protection tool. It leaves class & method names intact but at the same time secures your .NET code not allowing it to be reflected by standard .NET tools such as reflector.

  14. 14 Mahmoud Al-Qudsi Jun 22nd, 2008 at 6:16 pm

    I just took a look at it, and, sorry, it’s terrible.

  15. 15 Dan Jun 22nd, 2008 at 6:31 pm

    Can you be more specific?

  1. 1 .net obfuscator {smartassembly}, .net obfuscation, Protection and Improvement Pingback on Aug 10th, 2007 at 7:21 pm
  2. 2 .net obfuscator {smartassembly}, .net obfuscation, Protection and Improvement Pingback on Sep 16th, 2007 at 7:55 am

Leave a Reply




Categories

If you're looking for a webhost and just can't decide, checkout out Lunarpages for some awesome deals and excellent service! NeoSmart Technologies recommends and uses the dedicated server packages.

Only click this if you're a fraud.

Search

Donate via PayPal