コード例 #1
0
        public void Decrypt(ResourceDecrypter resourceDecrypter, ISimpleDeobfuscator simpleDeobfuscator)
        {
            if (decryptMethod == null)
            {
                return;
            }

            resource = CoUtils.GetResource(module, decrypterCctor);
            if (resource == null)
            {
                return;
            }
            var decrypted    = resourceDecrypter.Decrypt(resource.GetResourceStream());
            var reader       = MemoryImageStream.Create(decrypted);
            int numEncrypted = reader.ReadInt32();

            Logger.v("Restoring {0} encrypted methods", numEncrypted);
            Logger.Instance.Indent();
            for (int i = 0; i < numEncrypted; i++)
            {
                int  delegateTypeToken = reader.ReadInt32();
                uint codeOffset        = reader.ReadUInt32();
                var  origOffset        = reader.Position;
                reader.Position = codeOffset;
                Decrypt(reader, delegateTypeToken, simpleDeobfuscator);
                reader.Position = origOffset;
            }
            Logger.Instance.DeIndent();
        }
コード例 #2
0
        public void Initialize(ResourceDecrypter resourceDecrypter)
        {
            if (decrypterType == null)
            {
                return;
            }

            encryptedResource = CoUtils.GetResource(module, DotNetUtils.GetCodeStrings(decrypterType.FindStaticConstructor()));
            encryptedResource.Data.Position = 0;
            constantsData = resourceDecrypter.Decrypt(encryptedResource.Data.CreateStream());
        }
コード例 #3
0
        public void Initialize(ResourceDecrypter resourceDecrypter)
        {
            if (decrypterType == null)
            {
                return;
            }

            var cctor = decrypterType.FindStaticConstructor();

            encryptedResource = CoUtils.GetResource(module, DotNetUtils.GetCodeStrings(cctor));

            //if the return value is null, it is possible that resource name is encrypted
            if (encryptedResource == null)
            {
                var Resources = new string[] { CoUtils.DecryptResourceName(module, cctor) };
                encryptedResource = CoUtils.GetResource(module, Resources);
            }

            constantsData = resourceDecrypter.Decrypt(encryptedResource.GetReader().AsStream());
        }