From 79eb228200047ce40607e08411bed0b41e0b15f7 Mon Sep 17 00:00:00 2001 From: de4dot Date: Wed, 16 Nov 2011 22:59:04 +0100 Subject: [PATCH] Remove module if we don't load it. Restore indent level. --- de4dot.code/FilesDeobfuscator.cs | 11 +++++++---- de4dot.code/Log.cs | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/de4dot.code/FilesDeobfuscator.cs b/de4dot.code/FilesDeobfuscator.cs index b159c611..7577ef90 100644 --- a/de4dot.code/FilesDeobfuscator.cs +++ b/de4dot.code/FilesDeobfuscator.cs @@ -72,19 +72,19 @@ namespace de4dot { deobfuscateAll(); } - void removeModule(ModuleDefinition module) { + static void removeModule(ModuleDefinition module) { AssemblyResolver.Instance.removeModule(module); DotNetUtils.typeCaches.invalidate(module); } void detectObfuscators() { - foreach (var file in loadAllFiles(true)) { + foreach (var file in loadAllFiles(true)) removeModule(file.ModuleDefinition); - } } void deobfuscateOneAtATime() { foreach (var file in loadAllFiles()) { + int oldIndentLevel = Log.indentLevel; try { file.deobfuscateBegin(); file.deobfuscate(); @@ -96,6 +96,7 @@ namespace de4dot { file.save(); removeModule(file.ModuleDefinition); + AssemblyResolver.Instance.clearAll(); } catch (Exception ex) { Log.w("Could not deobfuscate {0}. Use -v to see stack trace", file.Filename); @@ -103,6 +104,7 @@ namespace de4dot { } finally { file.deobfuscateCleanUp(); + Log.indentLevel = oldIndentLevel; } } } @@ -200,13 +202,14 @@ namespace de4dot { if ((file.ModuleDefinition.Attributes & ModuleAttributes.ILOnly) == 0) { Log.w("Ignoring assembly with native code {0}", file.Filename); + removeModule(file.ModuleDefinition); return false; } - var deob = file.Deobfuscator; if (skipUnknownObfuscator && deob is deobfuscators.Unknown.Deobfuscator) { Log.v("Skipping unknown obfuscator: {0}", file.Filename); + removeModule(file.ModuleDefinition); return false; } else { diff --git a/de4dot.code/Log.cs b/de4dot.code/Log.cs index 14ddf210..ab428a8f 100644 --- a/de4dot.code/Log.cs +++ b/de4dot.code/Log.cs @@ -22,7 +22,7 @@ using System.Collections.Generic; namespace de4dot { static class Log { - static int indentLevel = 0; + public static int indentLevel = 0; const int indentSize = 2; public enum LogLevel {