I want to know if there are ways to compile C, C++ and Python code in order to not be able to reverse engineering it over Linux or not?

I have heard there are some ways over Windows to do it, but I am working on Linux.

I want to compile my code securely, as released or final version.


At least I want to make it hard for usual users to disassemble,

I am using GCC for C and C++, also I would be thankful if you introduce me best compiler for Python.

closed as off-topic by Hauke Laging, Anthon, Zelda, Timo, terdon Feb 24 '14 at 11:37

  • This question does not appear to be about Unix or Linux within the scope defined in the help center.
If this question can be reworded to fit the rules in the help center, please edit the question.

  • What means are you familiar with on Windows? Can't those be extended to Linux? – devnull Feb 24 '14 at 9:56
  • 1
    Have you explored anti-debugging techniques? – devnull Feb 24 '14 at 9:57
  • @devnull not yet... – MLSC Feb 24 '14 at 9:58
  • I am not familiar with windows...I have hear there is a way in visual c in win – MLSC Feb 24 '14 at 9:59
  • code is in the end compile in ASM or in bytecode depending of the language execpt by complexifying I don't think that's possible – Kiwy Feb 24 '14 at 10:02


you probably don't want to invest time into preventing people from disassembling your code: instead focus on making your project better, so that once your competitors have figured out how you did feature X, your software already has feature Y...

the reasoning is simple: if you have a dull project, then nobody will care to disassemble it and you have invested all the time for nought. otoh, if your product is cool, an armada of hackers will spent time to figure out how you did it. there is little you can do about it (and it happens to major players (like microsoft,...) as well). but these hackers will always be one step behind: re-constructing a program from assembler is not trivial. so make sure that you keep moving, and they will stay behind.


make sure that your code does not contain debugging symbols. with gcc this basically means that you should turn off the -g flag. (most likely this is exactly what Visual Studio's "Release" builds do for MSVC).

you might also think about static linking of external libraries (in order to keep code injection via the dynamic linker minimal)


do not trust any vendor, that providing a Release build will protect your binary in any way.

Not the answer you're looking for? Browse other questions tagged or ask your own question.