I'm not very afraid of my application being cracked (it will be disappointing if application is so bad that no one is interested in cracking it). It's not heavily protected anyway, not overly complex serial key and licence checks on few places in code. It just bugs me that without obfuscation, somebody can easily get source code, rebrand it and sell it as its own.
In a nutshell, the main difference between Dotfuscator Community Edition and the other "professional" editions is that Community Edition will only really obfuscate and change your namespaces, method names, and other "public" accessible aspects of your classes. It won't delve into the functions themselves and obfuscate the "private" code within the function.
Also, the Community Edition doesn't do anything to obfuscate such things as control flow within your application, nor will it "combine" code from multiple assemblies into one assembly. These are features that are available within the "professional" paid-for versions.
Commercial obfuscators do cost a lot of money, and as to wether they are worth the money? Well, that's a judgement call that really only you can make. Personally, I would say that it isn't worth it in your scenario. Firstly, because you're only wanting to protect one application ("I plan to release one small, low priced utility.") and secondly, you say that you're not overly concerned with the application being "cracked" ("I'm not very afraid of my application being cracked.").
I understand how it can bug you that compiled .NET applications, without any obfuscation, can be easily reverse engineered to their original source code, and that someone may make use of this to steal your software and sell it as their own, however, the fact remains that software piracy does exist and you will probably never stop it.
The general consensus seems to be that you need to focus your time and energies more on making your product as great as it can be rather than using this same time trying to protect something that, given enough time/money, an "attacker" can "crack"/steal your software anyway, despite your best efforts to prevent him from doing so.
I would say that it probably happens a lot less than you think it does. Sure, software gets cracked, but I don't think too many people actually steal other's source code and completely re-brand it to sell as their own. I'm not saying it doesn't, or hasn't happened, but it's certainly not a common occurrence.
To summarise, I'd say that your best bet would be to focus on making your utility as great as it can be and use the free Dotfuscator obfuscator, since it requires very little investment of time/money, to obfuscate your code from the most obvious prying eyes, but don't lose any sleep over the fact that if someone wants to crack/steal your product/code badly enough, they will do.
I think Dotfuscator Community Edition shipped with Visual Studio is quite a naive solution. It provides only symbol renaming and does not obfuscate control flow at all. And if someone decides to stole your code it will only need to refactor back all names, which is quite easy with small amount of classes.
But I suggest you try Eziriz .NET Reactor. It costs only $179 (AFAIK best price/features ratio). It provides standard obfuscation techniques such as symbol renaming, string encryption, control flow obfuscation. As a good bonus it creates native launcher for you app, which will contain your main assembly and all third party references encrypted and loaded on demand. Plus it provides some licensing capabilities.
Anyway reversing .NET application is not so hard, I did it for fun and can say that it's only matter of time and money (and of course common sense) how fast your application will be cracked or reversed.
Another way to get around reverse engineering code is where you place your dll's if you cannot really afford obfuscators which do add support. And in your assembies before deployment tell the compiler where to look for them which was an old practice to hinder reverse engineering.But like it was already said, concentrate mostly on developing an excellent product and good coding practices, then you will be able to afford a nice obfuscator application in the future.Also, try not to worry to much about others cracking your code because most hackers crack code just find a way to use the product without paying for it and not to steal code or to learn from for beginning programmer. Yeah, I wish JIT only supported c# and vb.net which would have really cut down on reverse engineering but since jit can read many due to .net being really language friendly that is the price.So code away and make some money, buy some additional securities.
PreEmptive Protection - Dotfuscator provides comprehensive .NET application protection that easily fits into your secure software development lifecycle.Use it to harden, protect, and prune desktop, mobile, server, and embedded applications to help secure trade secrets and other intellectual property (IP), reduce piracy and counterfeiting, and protect against tampering and unauthorized debugging.Dotfuscator works on compiled assemblies without the need for more programming or even access to source code.
It's important to protect your intellectual property (IP).Your application's code contains design and implementation details, which can be considered IP.However, applications built on the .NET Framework contain significant metadata and high-level intermediate code, making them easy to reverse engineer, just by using one of many free, automated tools.By disrupting and stopping reverse-engineering, you can prevent unauthorized IP disclosure, and demonstrate that your code contains trade secrets.Dotfuscator can obfuscate your .NET assemblies to hinder reverse-engineering, while maintaining original application behavior.
It's also important to protect the integrity of your application.In addition to reverse-engineering, bad actors may attempt to pirate your application, alter the application's behavior at run time, or manipulate data.Dotfuscator can inject your application with the capability to detect and respond to unauthorized uses, including tampering, third-party debugging, and rooted devices.
Your copy of Microsoft Visual Studio includes a copy of PreEmptive Protection - Dotfuscator Community, free for personal use.(This free version was previously known as Dotfuscator Community Edition or Dotfuscator CE.)For instructions on how to install the version of Dotfuscator Community included with Visual Studio, see the Installation page.
Dotfuscator Community offers a range of software protection and hardening services for developers, architects, and testers.Examples of .NET Obfuscation and other Application Protection features included in Dotfuscator Community are:
Dotfuscator Community offers basic protection out-of-the-box.Even more application protection measures are available to registered users of Dotfuscator Community,and to users of PreEmptive Protection - Dotfuscator Professional, the world's leading .NET Obfuscator.For information about enhancing Dotfuscator, see the Upgrades page.
Depending on your installation history and version of Visual Studio, you may be currently running Dotfuscator Community 5, the prior major version. If so, you should upgrade, because it is important to ensure your code is being given the latest protection measures. Upgrades are available at no charge.
The first integer of the version, before the first dot ., indicates Dotfuscator's major version. If the first integer is 5, then you should perform the upgrade steps on this page, so that you can take advantage of the latest Dotfuscator 6 features and protection updates.
Visual Studio 2019Dotfuscator Community 6 is included in later versions of Visual Studio 2019 (version 16.10.0 and later).Update Visual Studio 2019 to the latest version. Updating Visual Studio automatically upgrades any Dotfuscator Community 5 installation to Dotfuscator Community 6.
Visual Studio 2017This version of Visual Studio only shipped with Dotfuscator Community 5.However, you can install or upgrade to Dotfuscator Community 6 by going to the Dotfuscator Downloads page and selecting the appropriate download link.
Earlier versions of Visual StudioDotfuscator Community 6 is not supported in these versions of Visual Studio.We recommend upgrading to a newer version of Visual Studio, or upgrading from Dotfuscator Community to Dotfuscator Professional.
If you previously used Dotfuscator 5's command-line interface (CLI) to protect your app, you need to update the path to the CLI in any projects and build scripts that reference it. It includes projects that use Dotfuscator Community's Xamarin integration.
The reason a path to Dotfuscator's CLI may now be invalid is because the names of some of the executables installed with Dotfuscator Community have changed in Dotfuscator 6. This change makes these executable names the same across Dotfuscator Community and Dotfuscator Professional.
The CLI path may also be invalid if you upgrade between major versions of Visual Studio or switch Visual Studio editions, as the Dotfuscator CLI is installed under Visual Studio's installation directory.The symptoms and solution listed below also apply to this scenario.
If you previously used Dotfuscator Community's Xamarin integration to protect a Xamarin app, recall that Dotfuscator is integrated into each individual app project (such as MyProject.Android.csproj and MyProject.iOS.csproj) separately and not into shared library projects.Update all of the app projects that are currently using Dotfuscator.
If one of the old paths is not an absolute path, then you should adjust the new path appropriately based on the context.In the example below, the VSInstallDir environment variable was used in the old path, so the corresponding new path should do the same.
If you are using a source control system, such as Git, then ensure the changes from step 6 are reflected in that system.Distribute these changes to the rest of your team as may be appropriate for your system and organization.
b37509886e