From 820300e3b2f20b3f4897648052b641c357d91f02 Mon Sep 17 00:00:00 2001 From: de4dot Date: Thu, 6 Oct 2011 08:59:05 +0200 Subject: [PATCH] Now using module.ResolveMethod(token) to resolve string decrypter methods --- AssemblyData/AssemblyService.cs | 25 ++++++------------------- AssemblyData/IAssemblyService.cs | 2 +- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/AssemblyData/AssemblyService.cs b/AssemblyData/AssemblyService.cs index c67c0f2c..cda5cf6a 100644 --- a/AssemblyData/AssemblyService.cs +++ b/AssemblyData/AssemblyService.cs @@ -71,9 +71,9 @@ namespace AssemblyData { } } - public int defineStringDecrypter(int methodToken, int typeToken) { + public int defineStringDecrypter(int methodToken) { checkStringDecrypter(); - var methodInfo = findMethod(methodToken, typeToken); + var methodInfo = findMethod(methodToken); if (methodInfo == null) throw new ApplicationException(string.Format("Could not find method {0:X8}", methodToken)); if (methodInfo.ReturnType != typeof(string)) @@ -100,26 +100,13 @@ namespace AssemblyData { return null; } - MethodInfo findMethod(int methodToken, int typeToken) { + MethodInfo findMethod(int methodToken) { checkAssembly(); - const BindingFlags bindingFlags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static; - foreach (var module in assembly.GetModules()) { - foreach (var method in module.GetMethods(bindingFlags)) { - if (method.MetadataToken == methodToken) - return method; - } - } - - foreach (var type in assembly.GetTypes()) { - if (type.MetadataToken == typeToken || typeToken == 0) { - var methods = type.GetMethods(bindingFlags); - foreach (var method in methods) { - if (method.MetadataToken == methodToken) - return method; - } - } + var method = module.ResolveMethod(methodToken) as MethodInfo; + if (method != null) + return method; } return null; diff --git a/AssemblyData/IAssemblyService.cs b/AssemblyData/IAssemblyService.cs index 29933e6b..bd3a1a31 100644 --- a/AssemblyData/IAssemblyService.cs +++ b/AssemblyData/IAssemblyService.cs @@ -27,7 +27,7 @@ namespace AssemblyData { void doNothing(); void loadAssembly(string filename); void setStringDecrypterType(StringDecrypterType type); - int defineStringDecrypter(int methodToken, int typeToken = 0); + int defineStringDecrypter(int methodToken); object[] decryptStrings(int stringDecrypterMethod, object[] args); void exit(); }