From d00fcb79e402669d11c7b190f43a56cc129e750b Mon Sep 17 00:00:00 2001 From: de4dot Date: Fri, 9 Nov 2012 02:15:28 +0100 Subject: [PATCH] Don't remove fields if we should keep all types --- de4dot.code/deobfuscators/DeepSea/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/DeobfuscatorBase.cs | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/de4dot.code/deobfuscators/DeepSea/Deobfuscator.cs b/de4dot.code/deobfuscators/DeepSea/Deobfuscator.cs index 4e679c1b..9d9e45c5 100644 --- a/de4dot.code/deobfuscators/DeepSea/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/DeepSea/Deobfuscator.cs @@ -266,7 +266,7 @@ done: } public override void deobfuscateEnd() { - if (options.RestoreFields) + if (options.RestoreFields && CanRemoveTypes) fieldsRestorer.cleanUp(); removeInlinedMethods(); diff --git a/de4dot.code/deobfuscators/DeobfuscatorBase.cs b/de4dot.code/deobfuscators/DeobfuscatorBase.cs index 2ae4a4b6..c9c3ad50 100644 --- a/de4dot.code/deobfuscators/DeobfuscatorBase.cs +++ b/de4dot.code/deobfuscators/DeobfuscatorBase.cs @@ -89,6 +89,10 @@ namespace de4dot.code.deobfuscators { get { return false; } } + protected bool CanRemoveTypes { + get { return !Operations.KeepObfuscatorTypes && !KeepTypes; } + } + protected bool CanRemoveStringDecrypterType { get { return Operations.DecryptStrings != OpDecryptString.None && staticStringInliner.InlinedAllCalls; } } @@ -161,7 +165,7 @@ namespace de4dot.code.deobfuscators { } public virtual void deobfuscateEnd() { - if (!Operations.KeepObfuscatorTypes && !KeepTypes) { + if (CanRemoveTypes) { removeTypesWithInvalidBaseTypes(); deleteEmptyCctors();