Saturday, December 5, 2009

Basics

Before you can protect your software well, you must first understand the methods crackers use to crack your software. Crackers are the people who try to remove the protection from your software so that it can be illegally distributed.

Why Crackers Crack

The first mistake developers often make is in underestimating the power and number of crackers, and that's the worst mistake any developer of protection can make. Mostly, crackers are very smart people who will work on removing software protection for days at a time, and in extreme cases even for weeks, for the challenge of it. The cracker's success almost always depends on his motivation.

It may surprise you to learn that most of the cracker's motivation is not financial. Crackers post their cracks and information for free, after all. They're not making money off your software, though the people who use their cracks are saving money. Rather than crack software for financial gain, crackers are taking part in a sort of informal competition. A cracker who can remove a new and very complicated protection scheme becomes a highly regarded and respected person within the cracker community.

How Crackers Crack: Debuggers and Disassemblers

Protection developers often presume that without source code, crackers will not be able to understand the software's protection. This is a huge mistake. Crackers use two kinds of utilities for breaking software protection—debuggers and disassemblers.

Debuggers

Debuggers allow crackers to trace an application, instruction by instruction, and to stop it at any point and follow its important sections. It is true that applications written in higher-level languages (like C++, Visual Basic, or Delphi) may be traced only in assembler, but crackers understand what is happening in the application code amazingly well—probably better than most people can imagine.

The truth is, the higher the level of the programming language, the more difficult it is to trace. But on the other hand, higher-level programming languages offer fewer possibilities for creating really good protection. Everything has its bright and dark sides.

Disassemblers

Disassemblers can translate application code back into assembler. One advantage that disassemblers offer over decompilers is that they always translate into assembler, so the cracker has to know only that one language. The quality of the resulting translated code depends on the quality of the disassembler. The best disassemblers even comment on the translated code, which makes the code that much easier to understand. For example, if the cracker finds a "Wrong serial number" string and locates its place in the code, he will be able to find the part of the code that protects the application. At that point, nothing can prevent him from studying the protection and breaking it.

Decompilers

Decompilers can translate application code back to source code. A decompiler can only translate applications that were written in the language for which the particular decompiler was created. There are, for example, decompilers for Delphi, Visual Basic, and Java. A good decompiler can do a good job of translating the application. Once an application is translated, it's easy for the cracker (if he knows the particular language) to find the sections of interest and determine how they work.

The Most Frequent Protection Failures

There are several reasons why a program may not be well protected against illegal copying:

No program protection: It is very common for programs to contain no protection at all, and yet their authors require users to purchase the program. When a program is unprotected against copying, developers should not be surprised when their profits are small.

Weak program protection: Approximately 70 percent of all programs have very weak protection, which crackers can remove very quickly.

Program protection causing program failures: Many programmers protect their products weakly or not at all because they are afraid that incorrectly programmed protection will create problems with their programs.

It's better to use weaker protection code than none at all, but you will not stop the better crackers this way. Fine-tuning the protection scheme is the most important part of any protection strategy. Once the protection is created, the programmer should become a cracker for a while and, using the crackers' programs, test whether anything has been forgotten.

No comments:

Post a Comment