Use the new lookup() method

This commit is contained in:
de4dot 2011-11-06 12:18:35 +01:00
parent 4ecedb5b01
commit a0509d2735
2 changed files with 11 additions and 12 deletions

View File

@ -46,19 +46,20 @@ namespace de4dot.deobfuscators.dotNET_Reactor {
public EncryptedResource(ModuleDefinition module, EncryptedResource oldOne) { public EncryptedResource(ModuleDefinition module, EncryptedResource oldOne) {
this.module = module; this.module = module;
if (oldOne.resourceDecrypterMethod != null) resourceDecrypterMethod = lookup(oldOne.resourceDecrypterMethod, "Could not find resource decrypter method");
resourceDecrypterMethod = module.LookupToken(oldOne.resourceDecrypterMethod.MetadataToken.ToInt32()) as MethodDefinition;
if (oldOne.encryptedDataResource != null) if (oldOne.encryptedDataResource != null)
encryptedDataResource = DotNetUtils.getResource(module, oldOne.encryptedDataResource.Name) as EmbeddedResource; encryptedDataResource = DotNetUtils.getResource(module, oldOne.encryptedDataResource.Name) as EmbeddedResource;
key = oldOne.key; key = oldOne.key;
iv = oldOne.iv; iv = oldOne.iv;
if (resourceDecrypterMethod == null && oldOne.resourceDecrypterMethod != null)
throw new ApplicationException("Could not initialize EncryptedResource");
if (encryptedDataResource == null && oldOne.encryptedDataResource != null) if (encryptedDataResource == null && oldOne.encryptedDataResource != null)
throw new ApplicationException("Could not initialize EncryptedResource"); throw new ApplicationException("Could not initialize EncryptedResource");
} }
T lookup<T>(T def, string errorMessage) where T : MemberReference {
return DeobUtils.lookup(module, def, errorMessage);
}
public bool couldBeResourceDecrypter(MethodDefinition method, IList<string> additionalTypes) { public bool couldBeResourceDecrypter(MethodDefinition method, IList<string> additionalTypes) {
if (!method.IsStatic) if (!method.IsStatic)
return false; return false;

View File

@ -80,16 +80,14 @@ namespace de4dot.deobfuscators.dotNET_Reactor {
this.stringDecrypterVersion = oldOne.stringDecrypterVersion; this.stringDecrypterVersion = oldOne.stringDecrypterVersion;
this.encryptedResource = new EncryptedResource(module, oldOne.encryptedResource); this.encryptedResource = new EncryptedResource(module, oldOne.encryptedResource);
foreach (var oldInfo in oldOne.decrypterInfos) { foreach (var oldInfo in oldOne.decrypterInfos) {
var method = module.LookupToken(oldInfo.method.MetadataToken.ToInt32()) as MethodDefinition; var method = lookup(oldInfo.method, "Could not find string decrypter method");
if (method == null)
throw new ApplicationException("Could not find string decrypter method");
decrypterInfos.Add(new DecrypterInfo(method, oldInfo.key, oldInfo.iv)); decrypterInfos.Add(new DecrypterInfo(method, oldInfo.key, oldInfo.iv));
} }
if (oldOne.otherStringDecrypter != null) { otherStringDecrypter = lookup(oldOne.otherStringDecrypter, "Could not find string decrypter method");
otherStringDecrypter = module.LookupToken(oldOne.otherStringDecrypter.MetadataToken.ToInt32()) as MethodDefinition; }
if (otherStringDecrypter == null)
throw new ApplicationException("Could not find string decrypter method"); T lookup<T>(T def, string errorMessage) where T : MemberReference {
} return DeobUtils.lookup(module, def, errorMessage);
} }
public void find(ISimpleDeobfuscator simpleDeobfuscator) { public void find(ISimpleDeobfuscator simpleDeobfuscator) {