I have several questions regarding reverse engineering of executable binaries (compiled machine code). Some of my questions are specific, other more open ended. In this thread I will only ask the specific questions. I will be thankful to anyone who helps me out.
1) are the identifiers (procedure names, variable names, object names, etc.) somehow preserved in compiled machine code? If not, would reverse engineered code have identifiers which look something like var001, var002, proc001, proc002, etc? As a side note, I remember reading in an article that some security experts reverse engineered a trojan and found out that it had been written by someone whose language was Mandarin Chinese. Now I am wondering, could it be that the programmer used variable/procedure/object names in Mandarin Chinese and these were preserved in the machine code? Or how else could the researchers tell?
2) are comments totally ignored during the compiling process? Or, again, could some comment text end up in the machine code?
3) when researchers find that a virus contains some signature intentionally left by its creator, do they mean humanly readable plaintext that can be seen with and hex editor? Or what else?
4) what compiled programming languages produce the most obfuscated (i.e. hard to reverse engineer) executables? Even more in detail, how does (Object)Pascal compare to C in this regard?