public ObfuscatedFile CreateObfuscationFile(ObfuscatedFile.Options fileOptions, ModuleContext moduleContext) { ObfuscatedFile ofile = new ObfuscatedFile(fileOptions, moduleContext, new NewAppDomainAssemblyClientFactory()); ofile.DeobfuscatorContext = new DeobfuscatorContext(); try { ofile.Load(CreateDeobfuscatorInfos().Select(di => di.CreateDeobfuscator()).ToList()); } catch (Exception ex) { MessageBox.Show(ex.Message); return null; } return ofile; }
public static IObfuscatedFile SearchDeobfuscator(string filename) { TheAssemblyResolver.Instance.ClearAll(); var fileOptions = new ObfuscatedFile.Options { Filename = filename }; var moduleContext = new ModuleContext(TheAssemblyResolver.Instance); var ofile = new ObfuscatedFile(fileOptions, moduleContext, new NewAppDomainAssemblyClientFactory()) { DeobfuscatorContext = new DeobfuscatorContext(), }; try { ofile.Load(CreateDeobfuscatorInfos().Select(di => di.CreateDeobfuscator()).ToList()); } catch (Exception) { return null; } return ofile; }
IObfuscatedFile CreateObfuscatedFile(SearchDir searchDir, string filename) { var fileOptions = new ObfuscatedFile.Options { Filename = Utils.GetFullPath(filename), ControlFlowDeobfuscation = options.ControlFlowDeobfuscation, KeepObfuscatorTypes = options.KeepObfuscatorTypes, MetaDataFlags = options.MetaDataFlags, RenamerFlags = options.RenamerFlags, }; if (options.DefaultStringDecrypterType != null) fileOptions.StringDecrypterType = options.DefaultStringDecrypterType.Value; fileOptions.StringDecrypterMethods.AddRange(options.DefaultStringDecrypterMethods); if (!string.IsNullOrEmpty(searchDir.OutputDirectory)) { var inDir = Utils.GetFullPath(searchDir.InputDirectory); var outDir = Utils.GetFullPath(searchDir.OutputDirectory); if (!Utils.StartsWith(fileOptions.Filename, inDir, StringComparison.OrdinalIgnoreCase)) throw new UserException(string.Format("Filename {0} does not start with inDir {1}", fileOptions.Filename, inDir)); var subDirs = fileOptions.Filename.Substring(inDir.Length); if (subDirs.Length > 0 && subDirs[0] == Path.DirectorySeparatorChar) subDirs = subDirs.Substring(1); fileOptions.NewFilename = Utils.GetFullPath(Path.Combine(outDir, subDirs)); if (fileOptions.Filename.Equals(fileOptions.NewFilename, StringComparison.OrdinalIgnoreCase)) throw new UserException(string.Format("Input and output filename is the same: {0}", fileOptions.Filename)); } var obfuscatedFile = new ObfuscatedFile(fileOptions, options.ModuleContext, options.AssemblyClientFactory); if (Add(obfuscatedFile, searchDir.SkipUnknownObfuscators, false)) return obfuscatedFile; obfuscatedFile.Dispose(); return null; }
private IObfuscatedFile CreateObfuscationFile(ObfuscatedFile.Options fileOptions, ModuleContext moduleContext) { var obfuscatedFile = new ObfuscatedFile(fileOptions, moduleContext, new NewAppDomainAssemblyClientFactory()) { DeobfuscatorContext = new DeobfuscatorContext() }; try { obfuscatedFile.load(knownDeobfuscators.Select(info => info.createDeobfuscator()).ToList()); } catch (Exception ex) { MessageBox.ShowError(ex.Message); return null; } return obfuscatedFile; }