How can I protect my software?

Hi there;

I implemented a software in visual basic and completed it successfully, but when I reverse engineer it, I cracked my software.

So, my question is that "How can I protect my software?" against bit manipulation of known tools?

Kind regards.
LVL 12
jazzIIIloveAsked:
Who is Participating?
 
Kyle AbrahamsConnect With a Mentor Senior .Net DeveloperCommented:
Correct, 2 binaries.  say: trial.exe,  full.exe

I would recommend they BOTH be in charge of checking for registration.    

1)  Make a copy of the hardware being used (MAC - CPU Chip, Motherboard version) and hash it to get a unique code

2)  Write that value so that full.exe has access to it (registry usually).  

On startup, ensure that the registry value matches the hash of the current code, and that you have the same machine hardware specs.  If someone changes there NIC card or CPU, this will become invalid and you'll have to let them re-register.


The purpose of having 2 binaries is so that the other can't be hacked / unassembled.  In that case, you would want the trial version to also go get the full version form somewhere.  (Either using a binary reader to write the file http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_26301264.html or dynamically download the file from  a secured location).

0
 
Kyle AbrahamsConnect With a Mentor Senior .Net DeveloperCommented:
define cracked?  What exactly are you trying to protect from or hide?
0
 
jazzIIIloveAuthor Commented:
In a diassemly of my software, I jumped from addresses to another addresses and cracked my own software.

I implemented it in visual basic. How can i provide a security mechanism for my software?

Regards.
0
Simple Misconfiguration =Network Vulnerability

In this technical webinar, AlgoSec will present several examples of common misconfigurations; including a basic device change, business application connectivity changes, and data center migrations. Learn best practices to protect your business from attack.

 
jazzIIIloveAuthor Commented:
I alreaady obsfucated my code, but the problem is I still can crack back my software.
0
 
Kyle AbrahamsConnect With a Mentor Senior .Net DeveloperCommented:
Again, what do you mean by crack?  

Are you talking bypassing some sort of protection or making unintended behavior or what?  Without getting into specfics there's nothing that can be done.

Also, as they pointed out, there's no *true* way to totally block your code.  Everything gets compiled into machine language and people can build up from there.
0
 
jazzIIIloveAuthor Commented:
I know there is no perfect secrecy. My issue I disabled some modules of the program for trial use but I easily find out the instruction to crack it and that drove me crazy. I need some strategies at least to give the impression for the cracker that cracking is unfeasible in a timely fashion...

Regards.
0
 
Kyle AbrahamsConnect With a Mentor Senior .Net DeveloperCommented:
I would honestly provide 2 binaries, it's the best way to ensure that the modules don't get cracked.  Just comment them out for the trial.

I'm not sure if using the compiler declaritives would work, in that case you can have a release mode for trial where you could do something like

#if trial
   exit sub
#end if

0
 
jazzIIIloveAuthor Commented:
You mean one binary for trial, one for full licensed? and if the user enters/inputs the right "thing" for enabling the software, which binary should be in charge for this?

I may be confused with your last comment, please explain further...

P.S. I am a little late. sorry for this.
0
 
jazzIIIloveAuthor Commented:
I don't know why hesistate to reply back but yes you are right.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.