public GeneratedCodeObfuscator(BuildModule module, MemberNameGenerator nameGenerator) { if (module == null) { throw new ArgumentNullException("module"); } if (nameGenerator == null) { throw new ArgumentNullException("nameGenerator"); } _module = module; _nameGenerator = nameGenerator; _mainType = _module.MainType; _mainTypeNamespace = _module.MainTypeNamespace; if (_mainType != null) { _callProxyBuilder = new MainTypeCallProxyBuilder(_module); if (_module.IsPrimeModule) { _functionPointerBuilder = new MainTypeFunctionPointerBuilder(_module); } } }
public static void FixExportedTypeNames(BuildAssembly assembly, MemberNameGenerator nameGenerator) { foreach (var module in assembly.Modules) { if (!module.Image.IsILOnly) { continue; } var exportedTypes = module.ExportedTypes; for (int i = 0; i < exportedTypes.Count; i++) { var exportedType = exportedTypes[i].GetOutermostType(); var type = exportedType.Resolve(module) as BuildType; if (type == null) { continue; } if (object.ReferenceEquals(type.Assembly, module.Assembly)) { continue; } if (!type.Rename) { continue; } type.NewName = nameGenerator.GenerateUniqueString(); type.NameChanged = true; } } }
public static void Obfuscate(BuildAssembly assembly, MemberNameGenerator nameGenerator) { foreach (BuildModule module in assembly.Modules) { if (!module.Image.IsILOnly) { continue; } Obfuscate(module, nameGenerator); } }
public ExplicitMethodOverrideBuilder(BuildAssembly assembly, MemberNameGenerator nameGenerator) { if (assembly == null) { throw new ArgumentNullException("assembly"); } if (nameGenerator == null) { throw new ArgumentNullException("nameGenerator"); } _assembly = assembly; _nameGenerator = nameGenerator; _state = new BuildState(); }
public static void Obfuscate(BuildModule module, MemberNameGenerator nameGenerator) { var obfuscator = new GeneratedCodeObfuscator(module, nameGenerator); obfuscator.Obfuscate(); }
private void Load() { if (CancellationPending) { return; } _log = OpenLog(); if (_log == null) { _log = new BuildLog(); } _nameGenerator = new MemberNameGenerator(_log, Random); // Add assemblies foreach (var projectAssembly in _project.Assemblies) { Assemblies.Add(projectAssembly.FilePath); } // Load assemblies var assemblyLoader = new BuildAssemblyLoader(); foreach (var projectAssembly in _project.Assemblies) { var assembly = Assemblies[projectAssembly.FilePath]; FireTaskStarted(assembly, ProjectBuildTaskType.Load); assemblyLoader.Load(assembly, projectAssembly); assembly.SaveState(); if (CancellationPending) { return; } FireTaskCompleted(assembly, ProjectBuildTaskType.Load); } _obfuscateControlFlow = assemblyLoader.ObfuscateControlFlow; _renameMembers = assemblyLoader.RenameMembers; _encryptIL = assemblyLoader.EncryptIL; _obfuscateResources = assemblyLoader.ObfuscateResources; _obfuscateStrings = assemblyLoader.ObfuscateStrings; _removeUnusedMembers = assemblyLoader.RemoveUnusedMembers; _sealTypes = assemblyLoader.SealTypes; _devirtualizeMethods = assemblyLoader.DevirtualizeMethods; _renamedAssemblyNames = assemblyLoader.RenamedAssemblyNames; _renameAssemblies = (_renamedAssemblyNames.Count > 0); // Load generated names foreach (var assembly in Assemblies) { _nameGenerator.Load(assembly); } _nameGenerator.GenerateGlobal(); MainTypeNamespace = _nameGenerator.MainTypeNamespace; Scavenge(); }
public static void Build(BuildAssembly assembly, MemberNameGenerator nameGenerator) { var builder = new ExplicitMethodOverrideBuilder(assembly, nameGenerator); builder.Build(); }