Protect your program from litchers, pirates, lamers...
[Scenario 01]
I coded a program with .NET, I plan to sell it at www.downl0ad.com with a fair price.
Then one day a litcher download the freetrial version and tested it.
Surposingly the freetrial version has some of the fullversion's function disabled or taken out,
but this litcher just installed a .NET decompiler and "vala~!!" he can save the whole program into a .NET project and enable those funtions or enhance it.
Then the litcher may just use it or recompile with a different name and sell it on the internet with a cheaper price.
[Scenario 02]
Ok, another fine day after I have coded the program, this time I'm sure no one can decompile the source code easily, because it's coded in VC++ 6.0, with WinAPI. Unless he can do very well in .ASM, else not much of a decompiler exist out there.
So, after I happily uploaded the program to www.downl0ad.com for sell, a week later I noticed my program was sold on Ebay~!!!
I'm prety damn sure I did not sell it on Ebay.
So, why is it there?
After I traced the sourced and noticed a huge shock~!!!
It's even downloadable at www.t0rrentspy.com (Bittorent).
Now, this has made me felt like film producer that had just had his film riped by some pirated company.
Later on I then learned that it was a "pirate" that pays for the 1 copy fee and download officialy from the website, legally.
Then upload to torrent sites, and sell it on ebay.
Now, with these 2 problems exist I cannot code and sell my program safely.
Some had told me a few solutions such as:
1. Build in a MAIL function to send mails to me and i'll check my inbox ot know which are/aren't my clients.
2. Build in a db connection that reads from a SQL server for an authorized key everytime the program runs. (limited for programs that goes online only.)
3. Build in a Client/Server so that you will have a small window popup to know who is connecting and who is not paying money to use it. You can then disable the program if it's not paid.
However, these solutions still has a certain level of flawness, the worst case is the DECOMPILER~~!!!
I am a C#.net coder, and I can only code with this, or VB.NET.
I don't really want to change my language because I Love C#.NET so much~!!!
So, please provide some usefull discussion.
I believe this will also help solving other programmer's problem as well.
Thanks.

