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.
|