private static void InitializeOptionalHeader(ImageOptionalHeader optionalHeader)
{
optionalHeader.Magic = OptionalHeaderMagic.Pe32;
optionalHeader.ImageBase = 0x400000;
optionalHeader.SectionAlignment = 0x2000;
optionalHeader.FileAlignment = 0x200;
optionalHeader.MajorOperatingSystemVersion = 4;
optionalHeader.MajorSubsystemVersion = 4;
optionalHeader.MajorLinkerVersion = 6;
optionalHeader.Subsystem = ImageSubSystem.WindowsCui;
optionalHeader.SizeOfStackReserve = 0x100000;
optionalHeader.SizeOfStackCommit = 0x1000;
optionalHeader.SizeOfHeapReserve = 0x100000;
optionalHeader.SizeOfHeapCommit = 0x1000;
optionalHeader.NumberOfRvaAndSizes = 0x10;
optionalHeader.DllCharacteristics = ImageDllCharacteristics.DynamicBase |
ImageDllCharacteristics.NxCompat |
ImageDllCharacteristics.NoSeh |
ImageDllCharacteristics.TerminalServerAware;
for (int i = 0; i < 0x10; i++)
optionalHeader.DataDirectories.Add(new ImageDataDirectory());
}