View Full Version : How can i protect my C++ program from Reverse Engineering
Manuel Ambulo
17 Feb 2008, 18:50
Hi,
Just have a little question about programming. Is there a way or already existing way in which i can compile my C++ program in a way which Reverse Engineering can be hard?..i know that there is Obfuscator, but im not sure it it supports Visual C++ projects. I mean, how (or what i can use to) compile my program to avoid others to do Reverse Engineering on it, or at least, make them hard to do Reverse Engineering, so then i can protect my program from Reverse Engineering?
Best Regards,
Manuel Ambulo
scruffyduck
18 Feb 2008, 01:17
Are you using dotNET or some other C++ compiler?
Manuel,
Is there a way or already existing way in which i can compile my C++ program in a way which Reverse Engineering can be hard?
If you are just worried about "reverse engineering" it is already hard in that your program is compile, and someone would need to be able to either understand assembly, or have a de-compiler handy to really discover your "algorythms".
You might find some C++ obfuscators on codeproject.com.
On the other hand, if you are worried about "copy-protection" (preventing someone from using an unlicensed copy), it comes in two main varieties... roll-your-own, and commercial.
To roll your own, you'll need to be familiar with public key cyptography. You can do a search on "copy protection", or you can ask a vendor of a product whose protection you like what they use. Most will tell you privately if they know you are a programmer.
Finally, if you distribute your program through a large distributor they will often provide you a "wrapper" free of charge, but not all of them really protect your product from being posted on pirate sites. Often, the wrapper simple unwraps a copy-protection free product which could then be posted.
Cheers
jimkeir
18 Feb 2008, 14:51
Hi,
Three of the common utilities are called "ASProtect", "EXECryptor" and "Armadillo". There are plenty of others.
Asprotect (http://www.aspack.com/asprotectske.html)
EXECryptor (http://www.strongbit.com/)
Armadillo (http://www.siliconrealms.com/armadillo_engine.shtml)
Cheers,
Jim
Manuel Ambulo
18 Feb 2008, 19:32
Are you using dotNET or some other C++ compiler?
Yep, im using Visual C++ 2005, but my code is unmanaged, its the old C++, as i dont know managed code, i was hopping that Obfuscator could work with my Executable, but when i did some investigations and research i found that it just supports executables or modules generated with managed code, so i approached to the conclusion to not use it, because the program i have is very looong, and rewrite it in managed code, would be a very big pain for me... hehehe.
If you are just worried about "reverse engineering" it is already hard in that your program is compile, and someone would need to be able to either understand assembly, or have a de-compiler handy to really discover your "algorythms".
Yeah, i know but in the world, there are many persons with many different skills of programming, even better than mine, so that opens widely the possibilities that someone could make a hack for break it...hehehe and i want to protect it at least enough so even having assembky knoweldges to make them to have a hard time trying to hack it.
You might find some C++ obfuscators on codeproject.com.
Thanks! :) i will check it now....
To roll your own, you'll need to be familiar with public key cyptography. You can do a search on "copy protection", or you can ask a vendor of a product whose protection you like what they use. Most will tell you privately if they know you are a programmer
Well, i had already thought in that, and found an approach that may try to stop from people make illegal copies, i made the program internet-dependant, so the program itselfs checks in my servers if the key is already registered and if so, it then let the program uses some features, that are not built-in in the executable, so if the program has an non-registered key, then it will not work. I mean, there are like 2 features that depends on downloading data from my server, which is not heavy than a text file, so transfers are quickly, but are features that are important for the program to work properly, so that gives me the oportunity to check if a key was generated by me or by another third person's program. I arrived to that approach because i was thinking that maybe if i omit like 2 or 3 critical security sections from the executable code, i will be like difficult to figure-out them because that section wont be able for "reverse-enginering" them...
Three of the common utilities are called "ASProtect", "EXECryptor" and "Armadillo". There are plenty of others.
Thanks! Jim!, i didn't knew that there commercial programs made for encrypt the executables and modules :).....
Best Regards,
Manuel Ambulo
:stirthepo:stirthepoYeah, i know but in the world, there are many persons with many different skills of programming, even better than mine, so that opens widely the possibilities that someone could make a hack for break it...hehehe
Um, no offense Manual, but if the person's skills are that much better, why on earth would they be interested in hacking "hack code?" :stirthepo:rotfl::duck:
Manuel Ambulo
01 Mar 2008, 09:33
Um, no offense Manual, but if the person's skills are that much better, why on earth would they be interested in hacking "hack code?"
yeah they maybe couldnt any one that would like to hack "hack code", but just to prevent if someone could have that interest heheheeh :)
Manuel Ambulo
vBulletin® v3.8.3, Copyright ©2000-2013, Jelsoft Enterprises Ltd.