Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29273 Discussions

Reverse Compilation of executables

kulachi
Beginner
957 Views

I heard that it is possible to recover source code from a compiled, executable file (i.e. *.exe). My first question is: Is that really possible? One of our software vendors had it placed in the contract that we would not try to "reverse-compile" their software. I am wondering if that is possible with Fortran executables as well.

My second question is: How to safeguard against that? I need to provide one of our software vendors with one of my Fortran executable, so that they can write a requested application around it. Given that I am talking about financial market space, it is absolutely imperative that this vendor must not be able to "reverse-compile" my code.

Is there anyway I can do something and rest assured?

Kulachi

0 Kudos
4 Replies
Steven_L_Intel1
Employee
957 Views
It is not possible to recover Fortran source this way. One can create assembly code, sometimes, from an executable, and an expert programmer might be able to work out some code flow, but this is really impractical for an application of any size.

I'd recommend providing a statically linked release-configuration build and make sure that the traceback feature is not enabled.
0 Kudos
kulachi
Beginner
957 Views
Steve, many thanks!

Kulachi
0 Kudos
mail2
Beginner
957 Views

Mostoptimized compiler are notmuch interested inpreserving your original, documented and elegant source structure and naming of variables. Numbers only will do for our compiler.

In most cases areverse compilationwilloffer youa very optimized and "unstructured" blob. In assembler OK, butwithout any recognition of the original sources, variables, processing-flow.

Clemens

0 Kudos
DavidWhite
Valued Contributor II
957 Views

It is worth noting, however, that text strings contained in your code, particularly initialisation values, may be contained in your executable in clear text. If it is critical that these not be viewable in the .exe file, then you may want to store these, e.g. as an array of ASCII integers, and create the text strings at runtime.

David

0 Kudos
Reply