Protecting Applications Fortran compiled with ifort

Hi all,
Does anyone know of any obfuscating code that can be used for FORTRAN to protect from retro-engineering ?

Thanks,
J

Just encrypt them with gnupg or similar encryption tools

Ok thanks, but i can’t encrypt application with key… I want to protect from retro-engineering

Technically, it is not possible. You may want to turn optimisations on (-O2, -O3, or -Os), but there is not much you can do to prevent people from loading your executable into IDA or Ghidra.

1 Like

Although not possible to prevent, you can make it harder. As well as the above, run strip(1) on your executable, and always install your executable with read permission removed; which makes
it harder to obtain the executable, particularly on a secure system. If you have to make the executable accessible even on an iso image the answer is “no” for any executable. Sooner or later it has to run on a processor; which means it is ultimately vulnerable. You can take even more sophisticated steps to make it harder but if you are looking for an absolute method it is not possible. Requiring them to run on a remote secured machine without read access to the executable can certainly make it tough.

1 Like

Require those you distribute it to to sign an NDA stating that they will not attempt to reverse engineer it, nor will they provide access to the code or systems on which it is installed to anyone who has not signed the NDA. There is no technical, bullet-proof solution, but you can at least make your expectations clear and legally binding.

2 Likes

This solution would work, only if you could and have the resources to prove violation of an NDA in court. Reverse engineering is done all the time by bigger companies that sadly have the resources to bully smaller companies (from a mechanical engineering point of view)

1 Like

You could also enable whole program optimization (-ipo), which will make disassembly very confusing. Is this really a risk you need to mitigate? Maybe you’re looking for a licensing solution instead?

1 Like