could be a few variables. engine may not be designed to reverse compile,and sometimes source is hidden for security reasons.(protect from hackers,cheaters,etc)
//Some very important constants:#define MY_FIRST_CONSTANT 5#define MY_SECOND_CONSTANT 2...a = a + MY_FIRST_CONSTANT + MY_SECOND_CONSTANT;...
add eax, 7
Assembly language and high level languages are very different from each other.Assembly languages are tied to specific processor architecture (registers, stack, instruction set).High level languages usually operate on the concept of Turing complete virtual machine which usually has gaps in terms of low level processing. This allows high level languages to be independent from hardware and the code to be able to run on different operating systems without change.During the compilation most abstractions are broken and converted into specifics of hardware. This operation is irreversible.Therefore, by careful analysis of binary you can get a basic idea of how code operates but it will never give you a clean source code (except of very trivial cases).Think of source code as a sheet music for orchestra with lots of composer's remarks in it and exe as a particular recording. It will take a lot of hours of talented musician to "reverse engineer" recording into clean sheets. And it will probably miss a few instruments in it. Sometimes, it's not worth it.Some example would be this:Code: [Select]//Some very important constants:#define MY_FIRST_CONSTANT 5#define MY_SECOND_CONSTANT 2...a = a + MY_FIRST_CONSTANT + MY_SECOND_CONSTANT;...When compiled for x86 this may produce something like:Code: [Select]add eax, 7Whoever will try to reverse engineer this will probably scratch his head and ask "What the hell does 7 mean? Where did it come from?"