From 32fb933a8de960814024fd753cecdc791ea5b5ac Mon Sep 17 00:00:00 2001 From: yck1509 Date: Mon, 12 Oct 2015 19:32:30 +0800 Subject: [PATCH] Preserve some PE header fields --- Confuser.Core/ConfuserEngine.cs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Confuser.Core/ConfuserEngine.cs b/Confuser.Core/ConfuserEngine.cs index 60c2024cd..9cca6592a 100644 --- a/Confuser.Core/ConfuserEngine.cs +++ b/Confuser.Core/ConfuserEngine.cs @@ -327,12 +327,25 @@ static void Inspection(ConfuserContext context) { } } + static void CopyPEHeaders(PEHeadersOptions writerOptions, ModuleDefMD module) { + var image = module.MetaData.PEImage; + writerOptions.MajorImageVersion = image.ImageNTHeaders.OptionalHeader.MajorImageVersion; + writerOptions.MajorLinkerVersion = image.ImageNTHeaders.OptionalHeader.MajorLinkerVersion; + writerOptions.MajorOperatingSystemVersion = image.ImageNTHeaders.OptionalHeader.MajorOperatingSystemVersion; + writerOptions.MajorSubsystemVersion = image.ImageNTHeaders.OptionalHeader.MajorSubsystemVersion; + writerOptions.MinorImageVersion = image.ImageNTHeaders.OptionalHeader.MinorImageVersion; + writerOptions.MinorLinkerVersion = image.ImageNTHeaders.OptionalHeader.MinorLinkerVersion; + writerOptions.MinorOperatingSystemVersion = image.ImageNTHeaders.OptionalHeader.MinorOperatingSystemVersion; + writerOptions.MinorSubsystemVersion = image.ImageNTHeaders.OptionalHeader.MinorSubsystemVersion; + } + static void BeginModule(ConfuserContext context) { context.Logger.InfoFormat("Processing module '{0}'...", context.CurrentModule.Name); context.CurrentModuleWriterListener = new ModuleWriterListener(); context.CurrentModuleWriterListener.OnWriterEvent += (sender, e) => context.CheckCancellation(); context.CurrentModuleWriterOptions = new ModuleWriterOptions(context.CurrentModule, context.CurrentModuleWriterListener); + CopyPEHeaders(context.CurrentModuleWriterOptions.PEHeadersOptions, context.CurrentModule); if (!context.CurrentModule.IsILOnly || context.CurrentModule.VTableFixups != null) context.RequestNative();