Beispiel #1
0
        public override void deobfuscateBegin()
        {
            base.deobfuscateBegin();

            proxyDelegateFinder = new ProxyDelegateFinder(module);
            proxyDelegateFinder.find();
            localsRestorer = new LocalsRestorer(module);
            if (options.RestoreLocals)
            {
                localsRestorer.find();
            }

            logicalExpressionFixer = new LogicalExpressionFixer();
            stringDecrypter.initialize();
            integerDecrypter.initialize();
            arrayDecrypter.initialize();

            if (options.DecryptIntegers)
            {
                int32ValueInliner = new Int32ValueInliner();
                foreach (var method in integerDecrypter.getMethods())
                {
                    int32ValueInliner.add(method, (method2, args) => {
                        return(integerDecrypter.decrypt(method2));
                    });
                }
            }

            if (options.DecryptArrays)
            {
                arrayValueInliner = new ArrayValueInliner(module, initializedDataCreator);
                foreach (var method in arrayDecrypter.getMethods())
                {
                    arrayValueInliner.add(method, (method2, args) => {
                        return(arrayDecrypter.decrypt(method2));
                    });
                }
            }

            foreach (var method in stringDecrypter.getMethods())
            {
                staticStringInliner.add(method, (method2, args) => {
                    return(stringDecrypter.decrypt(method2));
                });
                DeobfuscatedFile.stringDecryptersAdded();
            }

            if (options.RemoveAntiStrongName)
            {
                addTypeToBeRemoved(strongNameChecker.Type, "Strong name checker type");
            }

            startedDeobfuscating = true;
        }
Beispiel #2
0
		public override void DeobfuscateBegin() {
			base.DeobfuscateBegin();

			proxyCallFixer = new ProxyCallFixer(module);
			proxyCallFixer.Find();
			localsRestorer = new LocalsRestorer(module);
			if (options.RestoreLocals)
				localsRestorer.Find();

			logicalExpressionFixer = new LogicalExpressionFixer();
			stringDecrypter.Initialize();
			integerDecrypter.Initialize();
			arrayDecrypter.Initialize();

			if (options.DecryptIntegers) {
				int32ValueInliner = new Int32ValueInliner();
				foreach (var method in integerDecrypter.GetMethods()) {
					int32ValueInliner.Add(method, (method2, gim, args) => {
						return integerDecrypter.Decrypt(method2);
					});
				}
			}

			if (options.DecryptArrays) {
				arrayValueInliner = new ArrayValueInliner(module, initializedDataCreator);
				foreach (var method in arrayDecrypter.GetMethods()) {
					arrayValueInliner.Add(method, (method2, gim, args) => {
						return arrayDecrypter.Decrypt(method2);
					});
				}
			}

			foreach (var method in stringDecrypter.GetMethods()) {
				staticStringInliner.Add(method, (method2, gim, args) => {
					return stringDecrypter.Decrypt(method2);
				});
				DeobfuscatedFile.StringDecryptersAdded();
			}

			if (options.RemoveAntiStrongName)
				AddTypeToBeRemoved(strongNameChecker.Type, "Strong name checker type");

			startedDeobfuscating = true;
		}