diff --git a/de4dot.code/deobfuscators/DeobfuscatorBase.cs b/de4dot.code/deobfuscators/DeobfuscatorBase.cs index 1c1a8b1d..b9f4d37f 100644 --- a/de4dot.code/deobfuscators/DeobfuscatorBase.cs +++ b/de4dot.code/deobfuscators/DeobfuscatorBase.cs @@ -209,6 +209,19 @@ namespace de4dot.code.deobfuscators { } } + protected void fixEnumTypes() { + foreach (var type in module.GetTypes()) { + if (!type.IsEnum) + continue; + foreach (var field in type.Fields) { + if (field.IsStatic) + continue; + field.IsRuntimeSpecialName = true; + field.IsSpecialName = true; + } + } + } + public virtual IEnumerable getStringDecrypterMethods() { return new List(); } diff --git a/de4dot.code/deobfuscators/Skater_NET/Deobfuscator.cs b/de4dot.code/deobfuscators/Skater_NET/Deobfuscator.cs index 5d16c19f..e625ba67 100644 --- a/de4dot.code/deobfuscators/Skater_NET/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Skater_NET/Deobfuscator.cs @@ -113,6 +113,7 @@ namespace de4dot.code.deobfuscators.Skater_NET { public override void deobfuscateEnd() { if (Operations.DecryptStrings != OpDecryptString.None && stringDecrypter.CanRemoveType) addTypeToBeRemoved(stringDecrypter.Type, "String decrypter type"); + fixEnumTypes(); base.deobfuscateEnd(); }