Now using module.ResolveMethod(token) to resolve string decrypter methods
This commit is contained in:
parent
1c721b017e
commit
820300e3b2
|
@ -71,9 +71,9 @@ namespace AssemblyData {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int defineStringDecrypter(int methodToken, int typeToken) {
|
public int defineStringDecrypter(int methodToken) {
|
||||||
checkStringDecrypter();
|
checkStringDecrypter();
|
||||||
var methodInfo = findMethod(methodToken, typeToken);
|
var methodInfo = findMethod(methodToken);
|
||||||
if (methodInfo == null)
|
if (methodInfo == null)
|
||||||
throw new ApplicationException(string.Format("Could not find method {0:X8}", methodToken));
|
throw new ApplicationException(string.Format("Could not find method {0:X8}", methodToken));
|
||||||
if (methodInfo.ReturnType != typeof(string))
|
if (methodInfo.ReturnType != typeof(string))
|
||||||
|
@ -100,26 +100,13 @@ namespace AssemblyData {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
MethodInfo findMethod(int methodToken, int typeToken) {
|
MethodInfo findMethod(int methodToken) {
|
||||||
checkAssembly();
|
checkAssembly();
|
||||||
|
|
||||||
const BindingFlags bindingFlags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static;
|
|
||||||
|
|
||||||
foreach (var module in assembly.GetModules()) {
|
foreach (var module in assembly.GetModules()) {
|
||||||
foreach (var method in module.GetMethods(bindingFlags)) {
|
var method = module.ResolveMethod(methodToken) as MethodInfo;
|
||||||
if (method.MetadataToken == methodToken)
|
if (method != null)
|
||||||
return method;
|
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -27,7 +27,7 @@ namespace AssemblyData {
|
||||||
void doNothing();
|
void doNothing();
|
||||||
void loadAssembly(string filename);
|
void loadAssembly(string filename);
|
||||||
void setStringDecrypterType(StringDecrypterType type);
|
void setStringDecrypterType(StringDecrypterType type);
|
||||||
int defineStringDecrypter(int methodToken, int typeToken = 0);
|
int defineStringDecrypter(int methodToken);
|
||||||
object[] decryptStrings(int stringDecrypterMethod, object[] args);
|
object[] decryptStrings(int stringDecrypterMethod, object[] args);
|
||||||
void exit();
|
void exit();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user