From d0bee2811126c0e5dff4f620a818611cf90e65e8 Mon Sep 17 00:00:00 2001 From: de4dot Date: Thu, 26 Sep 2013 16:36:52 +0200 Subject: [PATCH] Disable TypeDef cache when removing types etc --- de4dot.code/deobfuscators/DeobfuscatorBase.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/de4dot.code/deobfuscators/DeobfuscatorBase.cs b/de4dot.code/deobfuscators/DeobfuscatorBase.cs index e8c2b5a7..bfbf8de8 100644 --- a/de4dot.code/deobfuscators/DeobfuscatorBase.cs +++ b/de4dot.code/deobfuscators/DeobfuscatorBase.cs @@ -181,6 +181,10 @@ namespace de4dot.code.deobfuscators { } public virtual void DeobfuscateEnd() { + // Make sure the TypeDefCache isn't enabled while we modify types or remove stuff + bool cacheState = module.EnableTypeDefFindCache; + module.EnableTypeDefFindCache = false; + if (CanRemoveTypes) { RemoveTypesWithInvalidBaseTypes(); @@ -195,6 +199,8 @@ namespace de4dot.code.deobfuscators { RestoreBaseType(); FixMDHeaderVersion(); + + module.EnableTypeDefFindCache = cacheState; } static bool IsTypeWithInvalidBaseType(TypeDef moduleType, TypeDef type) {