Initialize loaded modules' module context
This commit is contained in:
parent
d5838aa6c2
commit
6a8e8dcb78
|
@ -28,17 +28,19 @@ namespace de4dot.code {
|
|||
class AssemblyModule {
|
||||
string filename;
|
||||
ModuleDefMD module;
|
||||
ModuleContext moduleContext;
|
||||
|
||||
public AssemblyModule(string filename) {
|
||||
public AssemblyModule(string filename, ModuleContext moduleContext) {
|
||||
this.filename = Utils.getFullPath(filename);
|
||||
this.moduleContext = moduleContext;
|
||||
}
|
||||
|
||||
public ModuleDefMD load() {
|
||||
return setModule(ModuleDefMD.Load(filename));
|
||||
return setModule(ModuleDefMD.Load(filename, moduleContext));
|
||||
}
|
||||
|
||||
public ModuleDefMD load(byte[] fileData) {
|
||||
return setModule(ModuleDefMD.Load(fileData));
|
||||
return setModule(ModuleDefMD.Load(fileData, moduleContext));
|
||||
}
|
||||
|
||||
ModuleDefMD setModule(ModuleDefMD newModule) {
|
||||
|
@ -59,7 +61,7 @@ namespace de4dot.code {
|
|||
public ModuleDefMD reload(byte[] newModuleData, DumpedMethods dumpedMethods) {
|
||||
TheAssemblyResolver.Instance.removeModule(module);
|
||||
//TODO: Use dumped methods
|
||||
return setModule(ModuleDefMD.Load(newModuleData));
|
||||
return setModule(ModuleDefMD.Load(newModuleData, moduleContext));
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
|
|
|
@ -132,12 +132,12 @@ namespace de4dot.code {
|
|||
set { deobfuscatorContext = value; }
|
||||
}
|
||||
|
||||
public ObfuscatedFile(Options options, IAssemblyClientFactory assemblyClientFactory) {
|
||||
public ObfuscatedFile(Options options, ModuleContext moduleContext, IAssemblyClientFactory assemblyClientFactory) {
|
||||
this.assemblyClientFactory = assemblyClientFactory;
|
||||
this.options = options;
|
||||
userStringDecrypterMethods = options.StringDecrypterMethods.Count > 0;
|
||||
options.Filename = Utils.getFullPath(options.Filename);
|
||||
assemblyModule = new AssemblyModule(options.Filename);
|
||||
assemblyModule = new AssemblyModule(options.Filename, moduleContext);
|
||||
|
||||
if (options.NewFilename == null)
|
||||
options.NewFilename = getDefaultNewFilename();
|
||||
|
|
|
@ -254,7 +254,7 @@ namespace de4dot.cui {
|
|||
void addFile() {
|
||||
if (newFileOptions == null)
|
||||
return;
|
||||
files.Add(new ObfuscatedFile(newFileOptions, filesOptions.AssemblyClientFactory));
|
||||
files.Add(new ObfuscatedFile(newFileOptions, filesOptions.ModuleContext, filesOptions.AssemblyClientFactory));
|
||||
newFileOptions = null;
|
||||
}
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ namespace de4dot.cui {
|
|||
IDeobfuscatorContext deobfuscatorContext = new DeobfuscatorContext();
|
||||
|
||||
public class Options {
|
||||
public ModuleContext ModuleContext { get; set; }
|
||||
public IList<IDeobfuscatorInfo> DeobfuscatorInfos { get; set; }
|
||||
public IList<IObfuscatedFile> Files { get; set; }
|
||||
public IList<SearchDir> SearchDirs { get; set; }
|
||||
|
@ -47,6 +48,7 @@ namespace de4dot.cui {
|
|||
public IAssemblyClientFactory AssemblyClientFactory { get; set; }
|
||||
|
||||
public Options() {
|
||||
ModuleContext = new ModuleContext(TheAssemblyResolver.Instance);
|
||||
DeobfuscatorInfos = new List<IDeobfuscatorInfo>();
|
||||
Files = new List<IObfuscatedFile>();
|
||||
SearchDirs = new List<SearchDir>();
|
||||
|
@ -125,6 +127,7 @@ namespace de4dot.cui {
|
|||
|
||||
IEnumerable<IObfuscatedFile> loadAllFiles(bool onlyScan) {
|
||||
var loader = new DotNetFileLoader(new DotNetFileLoader.Options {
|
||||
ModuleContext = options.ModuleContext,
|
||||
PossibleFiles = options.Files,
|
||||
SearchDirs = options.SearchDirs,
|
||||
CreateDeobfuscators = () => createDeobfuscators(),
|
||||
|
@ -147,6 +150,7 @@ namespace de4dot.cui {
|
|||
Dictionary<string, bool> visitedDirectory = new Dictionary<string, bool>(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
public class Options {
|
||||
public ModuleContext ModuleContext { get; set; }
|
||||
public IEnumerable<IObfuscatedFile> PossibleFiles { get; set; }
|
||||
public IEnumerable<SearchDir> SearchDirs { get; set; }
|
||||
public Func<IEnumerable<IDeobfuscator>> CreateDeobfuscators { get; set; }
|
||||
|
@ -303,7 +307,7 @@ namespace de4dot.cui {
|
|||
throw new UserException(string.Format("Input and output filename is the same: {0}", fileOptions.Filename));
|
||||
}
|
||||
|
||||
var obfuscatedFile = new ObfuscatedFile(fileOptions, options.AssemblyClientFactory);
|
||||
var obfuscatedFile = new ObfuscatedFile(fileOptions, options.ModuleContext, options.AssemblyClientFactory);
|
||||
if (add(obfuscatedFile, searchDir.SkipUnknownObfuscators, false))
|
||||
return obfuscatedFile;
|
||||
return null;
|
||||
|
|
2
dot10
2
dot10
|
@ -1 +1 @@
|
|||
Subproject commit 9c166daff7f705cda7c4cea5de70b23030b7c54a
|
||||
Subproject commit e532b444e4f3fbf7a84702d3fc30063d4973790f
|
Loading…
Reference in New Issue
Block a user