-2

I have developed an application using c# and I wish to apply good and strong licensing to it so that it can be protected against cracks and that my clients can renew the license even if they change their system

I had few doubts in mind

1.Can software licensing be accomplished on a virtual machine?.How can I protect my software in case if MAC Spoofing takes place either on a virtual machine or any other system that my client is using?

2.If I map my client's MAC address to my application would it be useful for protecting the software?

3.What are the advantages of Hardware Id versus MAC Id vs Serial Key which one of the above should I use to enforce strong licensing to my software.Please suggest

4.In case if a user changes his system time and reverses his clock he can use my trail version of the software without purchasing it.How can I prevent this from happening?

Vivek Murli
  • 89
  • 11
  • Would be better in [Programmers.SE]? – Soner Gönül Mar 22 '14 at 09:43
  • @SonerGönül I didn't get you – Vivek Murli Mar 22 '14 at 10:19
  • 1
    He meant you could've asked on: http://programmers.stackexchange.com/ – Saverio Terracciano Mar 22 '14 at 12:55
  • 1
    My advice: (1) Purchase a third-party licensing system that meets your needs; that will be cheaper than designing, implementing, testing, debugging and maintaining your own. And (2) don't worry about customers who try to break your licensing scheme. If you are selling to companies, they won't want to take on either the hassle or the legal risk. If you're selling to teenagers, they're going to defeat your licensing scheme in about five minutes no matter how good it is. Either way, there's no point in worrying about it. – Eric Lippert Mar 22 '14 at 14:40
  • This question appears to be off-topic because it is about software licensing – ChrisGPT was on strike Mar 22 '14 at 15:17
  • @EricLippert your point is valid but I want to try something to at least make it difficult to crack even tough it is possible to crack the software finally – Vivek Murli Mar 22 '14 at 16:58

1 Answers1

1

Your user shouldn't know what you base your authentication on. If you're afraid of relying on just one hardware component you can rely on several of them. You could as example use the HDD ID like this:

        ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
        ManagementClass partionsClass = new ManagementClass("Win32_LogicalDisk");
        ManagementObjectCollection partions = partionsClass.GetInstances();  

Remember you need to think also to scenarios in which your users change a piece of hardware you rely on (the MAC associated to the network card, the HDD ID, etc.)

Saverio Terracciano
  • 3,885
  • 1
  • 30
  • 42