Yes, there is.. You can use a disassembler.. Most C/C++ compilers generate "predictable" assembly..
Based on this there are also some programs that can produce readable C/C++ source code from an executable..