Cracking and reverse engineering are the most important threats faced software developers.Many companies have independent software units for fighting against cracks ,keygens and their online distributors .But this kind of piracy prevention is little bit difficult for small companies and developers who doesn’t have workforce or technologies to counter reverse engineering . Cracks dissociates the software assembly to patch it with new files , and activate them illegally . Software without a proper licensing mechanism can be easily pirated through a keygen or crack. These days there are typical third party applications designed to protect other softwares from cracks ,keygens and reverse engineering .These programs add additional layer of code over the software assemblies that hacker could not notice .Programs built with old versions of Microsoft .NET platforms and PHP web applications are more vulnerable to reverse engineering .
Protect software by providing online activation :
The local activation of softwares using serial number can be bypassed by keygens and cracks. Online activation checks the application against the software version, serial ,machine ID and other details in vendors server . So here the serials generated with keygens can be checked with sold ones, and others can be deactivated instantly .Further there is option to prescribe the number of activations that be performed using a single license . This would prevent the piracy of an original serial key . An other method of online activation is phone activation .This method generates a code during software installation that should be provided to the vendor to get original license code .
Protect software using machine locking :
This type of software activation includes collecting machine CPU ID or hard disk ID for activation .It is used to protect larger scale software installation on a firm or institution from cracks, keygens and reverse engineering . But a difficulty arise when customer is replacing the CPU or hard disk due to a system crash or as a part of total upgradation .
Make the full version different from test versions:
Few software vendors provides the full version of the application during test period .So if the pirate gets a serial or keygen the full version of the application can be activated very easily. Therefore the best method to prevent this to provide a limited functional trial version during testing and provide a full version link to those who opt for purchase .
Use third party software to protect against cracks and reverse engineering :
There are number of third party softwares that completely manages software licensing . Most of them are able to provide cryptographically strong serial system and trial licensing . They adds an external code base to the target application so that the cracking software will not able to detect it and inject code to patch the application .As I said ,.NET programs are more vulnerable to decompilation and reverse engineering . The entire information about the .NET assembly is kept inside a file called Manifest . So if the reverse engineer is able to collect these details , it is very easy to decompile the assembly , make modifications and to recompile it again to a new application .These third party applications detects and removes vulnerable details from metadata so that cracker will not be able to decompile the application. Software protection applications are mostly available for VB.NET ,C# ,J# ,VC++ ,PHP and Java assemblies .