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;