From 7bdea531348445e6319202d55a77d09745106b4a Mon Sep 17 00:00:00 2001 From: de4dot Date: Tue, 1 Nov 2011 18:47:26 +0100 Subject: [PATCH] Check op for null and update detection code --- .../dotNET_Reactor/MetadataTokenObfuscator.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/MetadataTokenObfuscator.cs b/de4dot.code/deobfuscators/dotNET_Reactor/MetadataTokenObfuscator.cs index 24bb7c98..ce7d1cc7 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/MetadataTokenObfuscator.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/MetadataTokenObfuscator.cs @@ -51,9 +51,13 @@ namespace de4dot.deobfuscators.dotNET_Reactor { MethodDefinition fieldMethod = null, typeMethod = null; foreach (var method in type.Methods) { - if (DotNetUtils.isMethod(method, "System.RuntimeTypeHandle", "(System.Int32)")) + if (method.Parameters.Count != 1) + continue; + if (method.Parameters[0].ParameterType.FullName != "System.Int32") + continue; + if (method.MethodReturnType.ReturnType.FullName == "System.RuntimeTypeHandle") typeMethod = method; - else if (DotNetUtils.isMethod(method, "System.RuntimeFieldHandle", "(System.Int32)")) + else if (method.MethodReturnType.ReturnType.FullName == "System.RuntimeFieldHandle") fieldMethod = method; } @@ -81,6 +85,8 @@ namespace de4dot.deobfuscators.dotNET_Reactor { if (call.OpCode.Code != Code.Call) continue; var method = call.Operand as MethodReference; + if (method == null) + continue; if (!MemberReferenceHelper.compareTypes(type, method.DeclaringType)) continue; var methodDef = DotNetUtils.getMethod(module, method);