Use NativeModuleWriterOptions when saving a mixed-mode assembly
This commit is contained in:
parent
226fee342e
commit
3bd00c99bc
|
@ -52,13 +52,24 @@ namespace de4dot.code {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void save(string newFilename, bool preserveTokens, bool updateMaxStack, IModuleWriterListener writerListener) {
|
public void save(string newFilename, bool preserveTokens, bool updateMaxStack, IModuleWriterListener writerListener) {
|
||||||
var writerOptions = new ModuleWriterOptions(module, writerListener);
|
MetaDataFlags mdFlags = 0;
|
||||||
if (!updateMaxStack)
|
if (!updateMaxStack)
|
||||||
writerOptions.MetaDataOptions.Flags |= MetaDataFlags.KeepOldMaxStack;
|
mdFlags |= MetaDataFlags.KeepOldMaxStack;
|
||||||
if (preserveTokens)
|
if (preserveTokens)
|
||||||
writerOptions.MetaDataOptions.Flags |= MetaDataFlags.PreserveTokens | MetaDataFlags.PreserveUSOffsets | MetaDataFlags.PreserveExtraSignatureData;
|
mdFlags |= MetaDataFlags.PreserveTokens | MetaDataFlags.PreserveUSOffsets | MetaDataFlags.PreserveExtraSignatureData;
|
||||||
writerOptions.Logger = Logger.Instance;
|
|
||||||
module.Write(newFilename, writerOptions);
|
if (module.IsILOnly) {
|
||||||
|
var writerOptions = new ModuleWriterOptions(module, writerListener);
|
||||||
|
writerOptions.MetaDataOptions.Flags |= mdFlags;
|
||||||
|
writerOptions.Logger = Logger.Instance;
|
||||||
|
module.Write(newFilename, writerOptions);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var writerOptions = new NativeModuleWriterOptions(module, writerListener);
|
||||||
|
writerOptions.MetaDataOptions.Flags |= mdFlags;
|
||||||
|
writerOptions.Logger = Logger.Instance;
|
||||||
|
module.NativeWrite(newFilename, writerOptions);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ModuleDefMD reload(byte[] newModuleData, DumpedMethodsRestorer dumpedMethodsRestorer, IStringDecrypter stringDecrypter) {
|
public ModuleDefMD reload(byte[] newModuleData, DumpedMethodsRestorer dumpedMethodsRestorer, IStringDecrypter stringDecrypter) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user