Lets say I have a nice peace of software and want to sell it online. How is it done, I mean protecting that only 1 person (the buyer) could use it and not him and 10 buddies of him..
Well the first step would be some form of encoding such as ioncube or zend. This will prevent most users from decoding the code to remove license code. The next step is going to be a license system such as http://www.olate.co.uk/products/iono/.
there's many crackers out there who can easily disassemble, debug and keygen your software... well, the best thing to do is, private crypter or code it yourself...that will prevent disassembly... but, don't buy with a VB stub, it will be easily decompiled, go with C/C++ Stubs..
Well that's going to turn the code into byte codes which aren't easy to reverse (there are scripts out there but it's not very mainstream). Then you use a script like http://phpaudit.com/ to then make it possible to license to certain IP's and host names.
i'm currently partnering with someone that sells my software and for that purpose i wrote an serial application server that distrubutes unique keys to each partner that sells my software. After entering the serial/key my serial application server will check if the key is not already in use and will match the name/adress and other fields of the buyer. Once verified it wil set a flag in the db so that no one can ever use that serial again. The disadvantage is that someone that buys my software need to have net access.. but so far no complains.
You can code something that reads your hardware ID on load time, so what does this mean? 1 - When the customer executes the program, it reads to see if the hardware id matches, if it doesn't, then the program denies access to. 2 - Provide your own encryption, so it cannot be bypassed using a third party debugger. 3 - RC4 would be good for a novice user, not for a professional debugger. Hope that helps.