Yeah some software is a lot easier to reverse engineer, like a video game.
There are tools for decompiling executable code, but the results are not usually very useful.
A lot of information is thrown away when compiling. Things like function and variable names are pretty important for a human to understand what code does, but the computer doesn't need it so the compiler throws them away.
Also the structure of the code is not necessarily preserved. The compiler may have inlined functions (basically copying the code from one function into another instead of calling it), macros will have been expanded, there's all sorts of things the compiler might move around in order to optimise the code.
So while a decompiler might be able to turn that assembly into valid C code, it might look nothing like the original and won't be much easier for someone to understand than looking directly at the assembly.
Yeah some software is a lot easier to reverse engineer, like a video game.
There are tools for decompiling executable code, but the results are not usually very useful.
A lot of information is thrown away when compiling. Things like function and variable names are pretty important for a human to understand what code does, but the computer doesn't need it so the compiler throws them away.
Also the structure of the code is not necessarily preserved. The compiler may have inlined functions (basically copying the code from one function into another instead of calling it), macros will have been expanded, there's all sorts of things the compiler might move around in order to optimise the code.
So while a decompiler might be able to turn that assembly into valid C code, it might look nothing like the original and won't be much easier for someone to understand than looking directly at the assembly.