diff --git a/de4dot.code/deobfuscators/CodeVeil/Deobfuscator.cs b/de4dot.code/deobfuscators/CodeVeil/Deobfuscator.cs index 133b2e48..e321f0ea 100644 --- a/de4dot.code/deobfuscators/CodeVeil/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/CodeVeil/Deobfuscator.cs @@ -273,6 +273,8 @@ namespace de4dot.code.deobfuscators.CodeVeil { addTypeToBeRemoved(proxyDelegateFinder.MethodInfoType, "Obfuscator proxy method MethodInfo type"); } + addMethodsToBeRemoved(InvalidMethodsFinder.findInvalidMethods(module), "Anti-reflection method"); + base.deobfuscateEnd(); } diff --git a/de4dot.code/deobfuscators/CodeVeil/InvalidMethodsFinder.cs b/de4dot.code/deobfuscators/CodeVeil/InvalidMethodsFinder.cs index dc4e545f..8f86c5a0 100644 --- a/de4dot.code/deobfuscators/CodeVeil/InvalidMethodsFinder.cs +++ b/de4dot.code/deobfuscators/CodeVeil/InvalidMethodsFinder.cs @@ -17,10 +17,22 @@ along with de4dot. If not, see . */ +using System.Collections.Generic; using Mono.Cecil; namespace de4dot.code.deobfuscators.CodeVeil { class InvalidMethodsFinder { + public static List findInvalidMethods(ModuleDefinition module) { + var list = new List(); + foreach (var type in module.GetTypes()) { + foreach (var method in type.Methods) { + if (isInvalidMethod(method)) + list.Add(method); + } + } + return list; + } + public static bool isInvalidMethod(MethodDefinition method) { if (method == null) return false;