Protect your program from litchers, pirates, lamers...

Hi, i've come a cross to noticed this problem, was wondering if anyone have any ideas that woudl like to share or discuss.

[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.

[2715 byte] By [zerodevice] at [2008-2-4]
# 1

You need to look into Obfuscation. The following blog post http://blogs.msdn.com/clrsecurity/archive/2005/05/26/422440.aspx should be a good starting point. Visual Studio ships with a community edition of Dotfuscator.

However in your case it sounds like the horse has already bolted ....

Regards,

Bruce

BruceMcLeod at 2007-10-3 > top of Msdn Tech,Software Engineering Discussion,Software Testing Discussion...
# 2
"However in your case it sounds like the horse has already bolted ...."

It does.

But I'm nt planning to let the second program be wasted on the same trick.

anyway, thanks for the info about obfuscator.

zerodevice at 2007-10-3 > top of Msdn Tech,Software Engineering Discussion,Software Testing Discussion...
# 3

Whomever suggested the solutions proposed anticipated 24/7 internet connection. That is not realistic even under the best of circumstances.

If you want to restrict usage than I suggest you set a reg key with an encrypted value.

BjRollison at 2007-10-3 > top of Msdn Tech,Software Engineering Discussion,Software Testing Discussion...
# 4

Hi,

My view on this case is "we can't stop this" may be we can find a better solution to protect your s/w

but soon some one wll find the better way to hack that.

remember "whenever there is a lock, then there must be a key...

but there may be lot of keys ...you know about the only key you have..."

But don't worry...always ther will be an another way....lets find that.

JeraldRajan at 2007-10-3 > top of Msdn Tech,Software Engineering Discussion,Software Testing Discussion...