Complementing what cacosapo said, the \n escape character is converted to an equivalent character code during compile time, depending on the code standard your machine is using.
Now, your string might be stored differently in the binary file depending on your operating system, ASCII is not always the right way to go, if you're on an NT machine, say, it could be using unicode to store your characters, in that case, Ã*f you try to view your code with an ASCII compliant hex editor, all you'll see is garbage, because almost every character in unicode uses a different hex value to store characters and each unicode character occupies a word(two bytes).
Some systems that use ASCII also use different sizes for the char type, in that case, if you're in a system that uses an entire word to store your characters in ASCII, you might see something like this in the binary file:
so, you might want to check what character codes your platform is using.Code:H e l l o W o r l d
About reverse engineering, there's a lot involved in the process, besides a decompiler, you would need a debugger (I recommend SoftIce, use emule to get it), and a vast knowledge about assembly, OSes and hardware. It's not an easy task, and gets harder for larger programs. As program sizes grow, the complexity of reverse engineering eventually gets to a point where it's nearly impossible for a human to carry out. It would be much easier to try to build an entire new program that copycats the one you're trying to reverse engineer.
