Software Protection Technology--Software protection advice
This section provides general suggestions on software protection, which are a summary of countless people's experience. Program When designing your own protection methods, it is best to follow the guidelines provided here, which will increase the protection strength of the software.
(1) the executable program must be shelled/compressed before the software is finally released, so that the decrypted cannot directly modify the program. If time permits and has the corresponding technical capabilities, it is best to design your own shelling/compression method. If off-the-shelf shelling tools are used, it is best not to choose popular tools, because these tools have been widely studied in depth, with a general method of shelling/decompression. In addition, it is best to use two or more different tools to shell/compress the program and use the anti-tracking features provided by these tools as much as possible.
(2) added integrity checks for the software itself. This includes checking disk files and memory images to prevent unauthorized program modification for the purpose of cracking. DLL and exe can check the integrity of each other.
(3) do not use clear names to name functions and files, such as islicensedversion () and key. dat. All software protection-related strings cannot be directly stored in executable files in plain text. These strings are preferably dynamically generated.
(4) give the user as little information as possible, because these clues may cause the decrypted to go directly to the Protection Core. For example, after detecting a cracking attempt, do not prompt the user immediately. Instead, make a mark somewhere in the system to stop the software after a random period of time, or pretend to work normally, but in fact it adds some garbage to the processed data.
(5) record the registration code and installation time in different places.
(7) check registration information and time Code The more dispersed, the better. Do not call the same function or determine the same global flag, because in this case, all the modifications to a single function will be cracked.
(8) do not rely on well-known functions such as getlocaltime () and getsystemtime () to obtain the system time. You can obtain the system time information by reading the modification time of key system files.
(9) If possible, you can use the method of checking the registration code online, and the data should be encrypted during online transmission.
(10) In addition to shelling/compression, you also need to program the anti-tracking code embedded in the software to increase security.
(11) when checking registration information, insert a large number of useless operations to mislead the decrypted, and add a delay after checking the incorrect registration information.
(12) adding randomness to software protection. For example, in addition to checking the registration code at startup, you can also randomly check the registration code at a certain time when the software is running. The random value can also prevent simulation tools such as software dog simulation programs.
(13) If the registration code protection method is used, it is best to use one machine with one code, that is, the registration code is related to machine characteristics, so that the registration code on one machine cannot be used on another machine, this prevents the spread of registration codes and machine numbers. Algorithm Do not be too superstitious about the hard drive serial number, because you can use related tools to modify its value.
(14) if the trial version is separated from the official version, and the software of the trial version does not have a function, do not just gray the relevant menu, but completely delete the relevant code, so that the compiled program has no relevant functional code at all.
(15) if the software contains a driver, it is best to add the protection judgment to the driver. Because drivers are much less restricted in accessing system resources than common applications, this gives software designers room to use.
(16) if the Keyfile protection method is used, the size of the Keyfile cannot be too small, and its structure can be designed to be complex, perform complex operations and checks on different parts of the Keyfile in different places in the program.
(17) self-designed algorithms for checking registration information should not be too simple. It is best to use sophisticated cryptographic algorithms. A large number of source codes can be found on the Internet.