title: How to read / write .exe machine code manually?
body: <p>I am not well acquainted to the compiler magic. The act of transforming human-readable code (or the not <em>really</em> readable Assembly instructions) into machine code is, for me, rocket science combined with sorcery.</p>
  
  <p>I will narrow down the subject of this question to Win32 executables (.exe). When I open these files up in a specialized viewer, I can find strings (usually 16b per character) scattered at various places, but the rest is just garbage. I suppose the unreadable part (majority) is the machine code (or maybe resources, such as images etc...).</p>
  
  <p>Is there any straightforward way of reading the machine code? Opening the exe as a file stream and reading it byte by byte, how could one turn these individual bytes into Assembly? Is there a straightforward mapping between these <em>instruction bytes</em> and the Assembly instruction?</p>
  
  <p>How is the .exe written? Four bytes per instruction? More? Less? I have noticed some applications can create executable files just like that: for example, in ACD See you can export a series of images into a slideshow. But this does not necessarily have to be a SWF slideshow, ACD See is also capable of producing EXEcutable presentations. How is that done?</p>
  
  <p>How can I understand what goes on inside an EXE file?</p>