There is nothing you can do to your software to guarantee that no one will be able to make pirated copies of your software, or use your software without your authorization. But there are a few things you should do to make your programs more difficult to copy and to make it illegal for others to make unauthorized copies of your software. First, make known your wishes about what others are allowed to do. Then make it difficult for others to circumvent your wishes.

Step 1: Copyright your program code.

Copyrighting is simply making a statement that only the copyright owner is authorized to make copies of the code; and those who wish to legally make copies of the code must first obtain permission from the copyright owner. So your first and most important step is to claim copyright ownership of your code. Claiming copyright ownership is done by simply putting a copyright statement in each major portion of the program code. For example, in a Java program, you should put a copyright statement in the definition of each Java class.

Though the copyright symbol, ©, is not a required part of a copyright statement, it is often included. You can type the copyright symbol on a PC by holding down the Alt key while typing its ASCII code, 0169, on the numeric keypad. It doesn’t matter if Num Lock is on or off, but just that the code number is typed using the numeric keypad.

Step 2: Create a license agreement.

You may write your own license agreement, including in it whatever you feel is important. I suggest you read through the license agreements of other software you’ve purchased, especially those that might be similar to your software, and choose the topics and thoroughness that you liked most. Also be aware of things that you didn’t like about others’ license agreements. For example, blocks of text in all capital letters are difficult to read. You’re free to choose the style of your license agreement. I’ve seen license agreements that were legalistic, silly, or even romantic. Just make sure your agreement clearly states what you do and don’t want others to do with your code.

You should then make installation of your program contingent on the user’s acceptance of your license agreement. You can do this by creating an install wizard for your program that makes user acceptance of your license agreement part of the installation of your program.

Step 3: Obfuscate your code

The next step is to make it difficult for your program to be decompiled, or at least to make the decompiled code difficult to understand. This process is called code obfuscation. Obfuscating your code often involves renaming objects, variables, and method names to meaningless symbols; and rearranging and changing code in such a way that it will still run the same way but is harder to understand.

What’s the easiest way to systematically rename identifiers, move code around, and make it difficult to read? Let a program do it. By letting a program obfuscate your code, this can easily be done as an automatic part of your build process.

Step 4: Provide a trial version of your program.

One more way to protect against piracy is to restrict program functionality as only a trial version until the customer registers the program. After you are paid, make the program fully functional or provide your customer with the fully functional version.

Conclusion

The steps listed above are all steps you can implement for free.  If your program is highly valuable, you might also consider registering your program with the US Copyright Office, http://www.copyright.gov/, having a lawyer review your license agreement, purchase more sophisticated software to better obfuscate your code, and implement a better copy protection scheme.  But even these added more costly measures cannot guarantee that your program will not be copied illegally.

Any copy protection scheme can be cracked and has been cracked. Is this an unfair disadvantage of working in the digital world? Maybe. But then, it seems to me that physical products can be and have been shoplifted from stores or stolen in other ways almost as easily.

What if I could find a way to make it impossible for anyone to give away or sell unauthorized copies of my program? And what if I could find a way to make it impossible for anyone to read and/or reuse my program logic and code? Would that ensure that I receive all the profits I should be entitled to for all the thought and effort I put into writing that unique program? The answer is still “no”. There is nothing to prevent another savvy software developer from legally purchasing your program, studying its user interfaces, abilities, and features, and writing his own similar, maybe even better, program. That too will take away from the sales of your program.

Keep in mind that the typical user of your software wants to do the right thing. Make your software available at a reasonable price. Let him know what you do and don’t want him to do with your software. Make it more difficult for him to do what you don’t want him to do. Then compete on the open market like the producer of any other product out there.

Related posts:

  1. What is Software Deployment?

About the Author


2 Responses to How to Protect Your Software from Piracy

  1. Carolina says:

    Thanks for making the effort to explain the terminlogy to the learners!

  2. Shin says:

    I definitely learned about most of this, but that being said, I still assumed it had been practical. Excellent job!

More Do-It-Yourself Java Games

More Do-It-Yourself Java Games: An Introduction to Java Graphics and Event-Driven Programming is the second book of the Do-It-Yourself Java Games series. You'll learn to create windows and dialogs, to add buttons and input fields, to use images and drawings, and to respond to keyboard input and mouse clicks and drags. You'll create 10 more games including several puzzles, a dice game, a word game, and a card game.

This book assumes you either have an understanding of basic Java programming or you have read the first book, Do-It-Yourself Java Games: An Introduction to Java Computer Programming. Read more.

Do-It-Yourself Java Games

Do-It-Yourself Java Games: An Introduction to Java Computer Programming uses a unique "discovery learning" approach to teach computer programming: learn Java programming techniques more by doing Java programming than by reading about them.

Through extensive use of fill-in blanks, with easy one-click access to answers, you will be guided to write complete programs yourself, starting with the first lesson. You'll create puzzle and game programs like Choose An Adventure, Secret Code, Hangman, Crazy Eights, and many more, and discover how, when, and why Java programs are written the way they are. Read more

Step-by-Step Tutorial

Many of the tips, techniques, and tools discussed in this blog are demonstrated in a detailed step-by-step tutorial in the book, This Little Program Went to Market, by Annette Godtland.

The book takes a computer program through the entire process of creating, deploying and distributing a program, then selling and marketing it (or any other product) on the Internet. Read more.