views:

53

answers:

3

Hi,

I'm looking for ways to make piracy most inconvenient.

I have developed a Windows Form software that I want the customer to be able to use only for a certain period of time, after installing. Is it as simple as writing installation date and subscription period into setting file and check these values during run time, or are there more robust approaches?

Also how do I prevent user from copying the software into other machines?

Please note that I am interested only in technical solutions against piracy, not social, business, legal and psychological solutions.

Thanks.

A: 

Ethics aside.

Making a piece of software expire at some later stage means that you have to record the installation date somewhere. Maybe the registry would be a better place instead of an easily copied and modifiable file.

To make sure the software isn't copied onto other machines, you could try to 'ping' the local network to discover other copies. i.e. have each copy advertise it's presence on the network while looking for other copies. If a copy finds more than what is registered then shut that copy down. Lots of software used to use this approach before internet activation.

Also what about internet activation? or use an online external server to record installation dates etc?

Gary Willoughby
+1  A: 

It depends on your market. I assume it's retail market (personnal usage).

Most licensing components write an encrypted value in the registry or in a file stored somewhere on your C drive.

An online activation system can helps too.

But in both case, it's easy for an experienced cracker to bypass those checks.

I don't know any popular software that didn't have his corresponding crack. Except for those that are connected to a web based service such as antivirus.

So if your software doesn't require a direct link to content on your server you won't be able to protect your software properly.

If it's enterprise market, it is very unlikely that serious companies will take the risk to crack your software.

Pierre 303
A: 

There are a number of technical solutions that range in complexity and how easy they are to circumvent.

  1. Write the date/time first used to a file. The user simply needs to find the file and update it themselves with a newer date. You could improve the security by encrypting the date/time before writing it.

  2. Write the date/time to the registry. Slightly more secure - but only via obscurity. Again perhaps use encryption to hide the actual data.

  3. Write the date/time to two (or more) places.

  4. Store the date/time on your server. This does require that the user has to be on-line to use your application.

To prevent unauthorised copying you could require that the user enter a license key when they install the software. This would be stored in the registry. You then get into the problem of what to do if someone distributes their key. A call back to your central database would help here, but you'd need to store your users IP address (for example), though this would fail if they didn't have a static IP or there were multiple users behind a corporate firewall.

ChrisF