void initDecrypters() { assemblyResolverInfo = new AssemblyResolverInfo(module, DeobfuscatedFile, this); assemblyResolverInfo.findTypes(); resourceDecrypterInfo = new ResourceDecrypterInfo(module, assemblyResolverInfo.SimpleZipType, DeobfuscatedFile); resourceResolverInfo = new ResourceResolverInfo(module, DeobfuscatedFile, this, assemblyResolverInfo); resourceResolverInfo.findTypes(); resourceDecrypter = new ResourceDecrypter(resourceDecrypterInfo); assemblyResolver = new AssemblyResolver(resourceDecrypter, assemblyResolverInfo); resourceResolver = new ResourceResolver(module, assemblyResolver, resourceResolverInfo); initStringDecrypterInfos(); assemblyResolverInfo.findTypes(); resourceResolverInfo.findTypes(); addModuleCctorInitCallToBeRemoved(assemblyResolverInfo.CallResolverMethod); addModuleCctorInitCallToBeRemoved(resourceResolverInfo.CallResolverMethod); resourceDecrypterInfo.setSimpleZipType(getGlobalSimpleZipType(), DeobfuscatedFile); if (!decryptResources()) throw new ApplicationException("Could not decrypt resources"); dumpEmbeddedAssemblies(); }
public AssemblyResolver(ResourceDecrypter resourceDecrypter, AssemblyResolverInfo assemblyResolverInfo) { this.resourceDecrypter = resourceDecrypter; this.assemblyResolverInfo = assemblyResolverInfo; }
byte[] decryptResource(AssemblyResolverInfo.EmbeddedAssemblyInfo info) { if (info.isCompressed) return resourceDecrypter.decrypt(info.resource); else return info.resource.GetResourceData(); }
public ResourceResolverInfo(ModuleDefinition module, ISimpleDeobfuscator simpleDeobfuscator, IDeobfuscator deob, AssemblyResolverInfo assemblyResolverInfo) : base(module, simpleDeobfuscator, deob) { this.assemblyResolverInfo = assemblyResolverInfo; }