Stop The Crackers !
Tips on stopping the crackers from stealing your software.

There are many small time programs on the internet known as "shareware" that let you download them free but with a restriction, unless you buy the program and receive the registration code. Crackers and cracking groups use their knowledge to neutralize the protection method and make it free to public. these pirated software are also known as "warez". here are some tips that help prevent crackers from cracking your software, but you must always remember a fact: "you can not ever fully protect your software", but you can make it very hard for the crackers.
These may not be useable for all developers so use them in any way its useful to you:

  • The very basic thing that I may suggest is that Visual Basic programs are harder to crack, especially for newbie crackers.
  • DO NOT use registration-sensitive message boxes, in most cases, when the entered registration code is wrong, a message box will popup and say that the registration info is wrong, this is the red carpet for the cracker and allows them to crack your program very easy, the best way to inform the user is either to use a new form, or to do nothing at all, for example, clearing the text boxes and waiting for another code.
  • If you are going to make a serial number out of the information that user provides, you must have a very strong algorithm or not use this method at all. Key generators are made very easy out of weak algorithms
  • There is a very useful API that detects live debuggers like softice, you can use this API to take action when user is a using a debugger on your program:
    Private Declare Function IsDebuggerPresent Lib "kernel32" () As Long
    here is an example of the API in action:

    'Example by Bartolotta Rocco (rocco.bartolotta@tin.it)
    'With the "IsDebuggerPresent" API we can test if our code is being
    'debugged (most probably for hacking/cracking) Enjoy!

    Private Declare Function IsDebuggerPresent Lib "kernel32" () As Long
    Private Sub Form_Load()
    ' If we're being debugged, then stop execution!
    If IsDebuggerPresent <> 0 Then End
    End Sub

    you may also find this API useful:

    Private Declare Sub OutputDebugString Lib "kernel32" Alias "OutputDebugStringA" (ByVal lpOutputString As String)

    This API sends a string to the debugger.
Homepage » Tips & Tricks » Stop Crackers