How to prevent from hacking ? You can crypt your program, make complex registration codes, translate execution of your program in high virtual memory. But they remain very vulnerable to hackers. The best way is to stop reverse engineering. Above all you need to forbid the use of the hacker's tools: the debugger and the memory dumper.
In first place comes the debugger. Without the use of debugger, it's almost impossible to understand the logic of software and to make patches. Hide&Protect forbid use of debugger. In second place comes the memory dumper. Dumper is useful for the hacker if the program is compressed or encoded. Hide&Protect obstruct the full result of a memory dumper witch makes it inoperative. More, Hide&Protect compress and encrypt your application, and has mechanism of monitoring of your application.