topic "About Software Protection methods"; [ $$0,0#00000000000000000000000000000000:Default] [{_}%EN-US [s0;%- [*R6 About Software Protection methods]&] [s0;/%- &] [s0;%- There are many ways to [_ try ]to protect your software from piracy... none of them is 100% effective.&] [s0;%- Most protection schemes are usually composed by following parts :&] [s0;%- &] [s0;i150;O0;%- Check if user has a license to run the software&] [s0;l160;%- This point can be accomplished by various means, like dongles, software licenses tied to one particular machine, lan/internet activation and original media checking.&] [s0;%- &] [s0;i150;O0;%- Make difficult for malicious user to defeat the protection scheme.&] [s0;l160;%- This point can be achieved by various means, from simple code obfuscation, which makes debugging/disassembly difficult, up to code encryption, which makes disassembly virtually impossible if user hasn`'t a program license.&] [s0;%- &] [s0; First step is the easiest to achieve, and its security degree depends almost only on authentication media chosen.&] [s0; In my opinion, a good dongle or, even better, an internet authentication method are the most secure; in particular, internet auth, which has the obvious caveat of the need of a connection available to run the application, can be the most flexible one.&] [s0; &] [s0; Second step presents most challenges.&] [s0; If it`'s quite easy to make it impossible for an user to unlock a protected software without having a correct license, it`'s virtually impossible to have 100% protection against a malicious user with a software license; every software that can be run on a computer can also be copied.&] [s0; &] [s0; The solution proposed here doesn`'t want to be a commercial grade protection scheme; its purpose is just to make it impossible for an user [_ without ]a license to run the software, even if he has good skills in software debugging, and make is [_ somehow ]difficult for an user in possession of a license to defeat the protection scheme.&] [s0; This is accomplished by encryption of some software parts and on`-the`-fly decryption with a license key obtained in any usable way.&] [s0; Beware that a mid`-skilled programmer in possession of a right license key can defeat the algorithm in short time, as the decryption process is quite trivial and placed exactly before the encrypted software parts; it can anyways make the process of reverse`-engineering not worth the time spent for it.&] [s0; &] [s0; [^topic`:`/`/Protect`/srcdoc`/HowItWorks`$en`-us^ How it works]&] [s0; ]