From 08eafd1080136deb21a541a9168b9eafaae41ed0 Mon Sep 17 00:00:00 2001 From: de4dot Date: Thu, 29 Dec 2011 14:04:43 +0100 Subject: [PATCH] Remove useless overrides --- de4dot.code/renamer/Renamer.cs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/de4dot.code/renamer/Renamer.cs b/de4dot.code/renamer/Renamer.cs index 5a422a19..44ab1a1e 100644 --- a/de4dot.code/renamer/Renamer.cs +++ b/de4dot.code/renamer/Renamer.cs @@ -86,10 +86,34 @@ namespace de4dot.code.renamer { prepareRenameMemberDefinitions(scopes); renameMemberDefinitions(); renameMemberReferences(); + removeUselessOverrides(scopes); renameResources(); modules.cleanUp(); } + void removeUselessOverrides(MethodNameScopes scopes) { + foreach (var scope in scopes.getAllScopes()) { + foreach (var method in scope.Methods) { + if (!method.Owner.HasModule) + continue; + if (!method.isPublic()) + continue; + var overrides = method.MethodDefinition.Overrides; + for (int i = 0; i < overrides.Count; i++) { + var overrideMethod = overrides[i]; + if (method.MethodDefinition.Name != overrideMethod.Name) + continue; + Log.v("Removed useless override from method {0} ({1:X8}), override: {2:X8}", + method.MethodDefinition, + method.MethodDefinition.MetadataToken.ToInt32(), + overrideMethod.MetadataToken.ToInt32()); + overrides.RemoveAt(i); + i--; + } + } + } + } + void renameTypeDefinitions() { Log.v("Renaming obfuscated type definitions");