The portable executable structure or design was able to solve multiple issues that appeared in previous structures, such as MZ for MS-DOS executables or the early stages of COM structures. It represents a quite complete design for any executable file. Some of the features of the PE structure are as follows:
- It separates the code and the data in sections, making it easy to manage the data separately from the program and link any string back in the assembly code.
- Each section has separate memory permissions, which are basically a layer of security over the virtual memory of each program running to allow or deny reading from a specific page of memory, writing to a specific page of memory, or executing code in a specific page of memory. A page of memory is 0x1000 bytes, which is 4,096 bytes in decimal.
- The file is expandable in memory (less size on a hard disk), which allows creating space for uninitialized variables (or variables that are not important to include a specific value...