I know that reverse engineering from binary to source code (e.g. C++) is generally considered hard or impossible but has any computer scientist actually proven mathematically that it's impossible or possible to reverse engineer (any) binary to source code? Is reverse engineering simply a very hard puzzle or are there binary out there that is simply impossible to reverse whether by hand or via decompiler?NOTE: I know the answer might be it depends on platform and programming language so I am going to assume the language used is C++ since it's generally considered impossible to reverse it.
Is it theoretically possible/impossible to reverse any binary?
disassembly;decompilation;c++
In fact, the answer is a bit subtle. According to Barak et al., it is impossible to obfuscate a program. Meaning that you will always leak enough information for an attacker to rebuild a blue-print of the program.On another hand, it is also impossible to build a program that will automatically reverse-engineering any program given as input (it comes from the Rice's theorem as obfuscation used to be built on non-trivial properties that you can find in programs).So, finally, perfect obfuscation is not possible, but full automation neither. Which means that human (and intuition) is, and will remain, the key of this Science.