예제 #1
0
 SaveModuleToDiskModulesCtxMenuCommand(Lazy <ITheDebugger> theDebugger, Lazy <IModulesContent> modulesContent, IAppWindow appWindow, IMessageBoxService messageBoxService, SimpleProcessReader simpleProcessReader)
     : base(theDebugger, modulesContent)
 {
     this.appWindow           = appWindow;
     this.messageBoxService   = messageBoxService;
     this.simpleProcessReader = simpleProcessReader;
 }
예제 #2
0
        public static MemoryModuleDefFile CreateAssembly(SimpleProcessReader simpleProcessReader, List <MemoryModuleDefFile> files)
        {
            var manifest = files[0];
            var file     = new MemoryModuleDefFile(simpleProcessReader, manifest.Process, manifest.Address, manifest.data, manifest.isInMemory, manifest.ModuleDef, false, manifest.AutoUpdateMemory);

            file.files = new List <MemoryModuleDefFile>(files);
            return(file);
        }
예제 #3
0
		public PEFilesSaver(SimpleProcessReader simpleProcessReader, Tuple<DnModule, string>[] files) {
			this.simpleProcessReader = simpleProcessReader;
			infos = new ModuleInfo[files.Length];
			for (int i = 0; i < files.Length; i++) {
				var module = files[i].Item1;
				infos[i] = new ModuleInfo(module.Process.CorProcess.Handle, module.Address, module.Size, files[i].Item2, !module.IsInMemory);
				maxProgress += 2;
			}
		}
예제 #4
0
		MemoryModuleDefFile(SimpleProcessReader simpleProcessReader, DnProcess process, ulong address, byte[] data, bool isInMemory, ModuleDef module, bool loadSyms, bool autoUpdateMemory)
			: base(module, loadSyms) {
			this.simpleProcessReader = simpleProcessReader;
			Process = process;
			Address = address;
			this.data = data;
			this.isInMemory = isInMemory;
			AutoUpdateMemory = autoUpdateMemory;
		}
예제 #5
0
 MemoryModuleDefFile(SimpleProcessReader simpleProcessReader, DnProcess process, ulong address, byte[] data, bool isInMemory, ModuleDef module, bool loadSyms, bool autoUpdateMemory)
     : base(module, loadSyms)
 {
     this.simpleProcessReader = simpleProcessReader;
     Process          = process;
     Address          = address;
     this.data        = data;
     this.isInMemory  = isInMemory;
     AutoUpdateMemory = autoUpdateMemory;
 }
예제 #6
0
		InMemoryModuleService(ITheDebugger theDebugger, IDocumentTabService documentTabService, Lazy<IMethodAnnotations> methodAnnotations, IAppWindow appWindow, SimpleProcessReader simpleProcessReader) {
			this.documentTabService = documentTabService;
			documentTreeView = documentTabService.DocumentTreeView;
			documentService = documentTreeView.DocumentService;
			this.appWindow = appWindow;
			this.methodAnnotations = methodAnnotations;
			this.theDebugger = theDebugger;
			this.simpleProcessReader = simpleProcessReader;
			theDebugger.OnProcessStateChanged_First += TheDebugger_OnProcessStateChanged_First;
		}
예제 #7
0
 public PEFilesSaver(SimpleProcessReader simpleProcessReader, Tuple <DnModule, string>[] files)
 {
     this.simpleProcessReader = simpleProcessReader;
     infos = new ModuleInfo[files.Length];
     for (int i = 0; i < files.Length; i++)
     {
         var module = files[i].Item1;
         infos[i]     = new ModuleInfo(module.Process.CorProcess.Handle, module.Address, module.Size, files[i].Item2, !module.IsInMemory);
         maxProgress += 2;
     }
 }
예제 #8
0
 InMemoryModuleService(ITheDebugger theDebugger, IDocumentTabService documentTabService, Lazy <IMethodAnnotations> methodAnnotations, IAppWindow appWindow, SimpleProcessReader simpleProcessReader)
 {
     this.documentTabService  = documentTabService;
     documentTreeView         = documentTabService.DocumentTreeView;
     documentService          = documentTreeView.DocumentService;
     this.appWindow           = appWindow;
     this.methodAnnotations   = methodAnnotations;
     this.theDebugger         = theDebugger;
     this.simpleProcessReader = simpleProcessReader;
     theDebugger.OnProcessStateChanged_First += TheDebugger_OnProcessStateChanged_First;
 }
예제 #9
0
        public static MemoryModuleDefFile Create(SimpleProcessReader simpleProcessReader, DnModule dnModule, bool loadSyms)
        {
            Debug.Assert(!dnModule.IsDynamic);
            Debug.Assert(dnModule.Address != 0);
            ulong  address  = dnModule.Address;
            var    process  = dnModule.Process;
            var    data     = new byte[dnModule.Size];
            string location = dnModule.IsInMemory ? string.Empty : dnModule.Name;

            simpleProcessReader.Read(process.CorProcess.Handle, address, data, 0, data.Length);

            var peImage = new PEImage(data, GetImageLayout(dnModule), true);
            var module  = ModuleDefMD.Load(peImage);

            module.Location = location;
            bool autoUpdateMemory = false;            //TODO: Init to default value

            if (GacInfo.IsGacPath(dnModule.Name))
            {
                autoUpdateMemory = false;                       // GAC files are not likely to decrypt methods in memory
            }
            return(new MemoryModuleDefFile(simpleProcessReader, process, address, data, dnModule.IsInMemory, module, loadSyms, autoUpdateMemory));
        }
예제 #10
0
		public static MemoryModuleDefFile Create(SimpleProcessReader simpleProcessReader, DnModule dnModule, bool loadSyms) {
			Debug.Assert(!dnModule.IsDynamic);
			Debug.Assert(dnModule.Address != 0);
			ulong address = dnModule.Address;
			var process = dnModule.Process;
			var data = new byte[dnModule.Size];
			string location = dnModule.IsInMemory ? string.Empty : dnModule.Name;

			simpleProcessReader.Read(process.CorProcess.Handle, address, data, 0, data.Length);

			var peImage = new PEImage(data, GetImageLayout(dnModule), true);
			var module = ModuleDefMD.Load(peImage);
			module.Location = location;
			bool autoUpdateMemory = false;//TODO: Init to default value
			if (GacInfo.IsGacPath(dnModule.Name))
				autoUpdateMemory = false;	// GAC files are not likely to decrypt methods in memory
			return new MemoryModuleDefFile(simpleProcessReader, process, address, data, dnModule.IsInMemory, module, loadSyms, autoUpdateMemory);
		}
예제 #11
0
		public static MemoryModuleDefFile CreateAssembly(SimpleProcessReader simpleProcessReader, List<MemoryModuleDefFile> files) {
			var manifest = files[0];
			var file = new MemoryModuleDefFile(simpleProcessReader, manifest.Process, manifest.Address, manifest.data, manifest.isInMemory, manifest.ModuleDef, false, manifest.AutoUpdateMemory);
			file.files = new List<MemoryModuleDefFile>(files);
			return file;
		}