private void btnSendList_Click(object sender, EventArgs e) { if (lbMultipleFiles.Items.Count == 0) { MessageBox.Show("No files are selected"); return; } FileWatch.CloseTarget(false); List <string> allFiles = new List <string>(); for (int i = 0; i < lbMultipleFiles.Items.Count; i++) { allFiles.Add(lbMultipleFiles.Items[i].ToString()); } allFiles.Sort(); string multipleFiles = ""; for (int i = 0; i < allFiles.Count; i++) { multipleFiles += allFiles[i]; if (i < allFiles.Count - 1) { multipleFiles += "|"; } } var mfi = new MultipleFileInterface(multipleFiles, FileWatch.currentFileInfo.bigEndian, FileWatch.currentFileInfo.useAutomaticBackups); if (FileWatch.currentFileInfo.useCacheAndMultithread) { mfi.getMemoryDump(); } FileWatch.currentFileInfo.targetInterface = mfi; if (VanguardCore.vanguardConnected) { FileWatch.UpdateDomains(); } this.DialogResult = DialogResult.OK; this.Close(); }
internal static bool LoadTargets(FileTarget[] provided = null) { FileTarget[] targets; string requestedFileType = currentSession.selectedTargetType; if (provided == null) { var lbTargets = S.GET <StubForm>().lbTargets; if (lbTargets.Items.Count == 0) { MessageBox.Show("No targets scheduled for loading. Aborting loading."); return(false); } targets = lbTargets.Items.Cast <FileTarget>().ToArray(); } else { targets = provided; } if (requestedFileType == TargetType.SINGLE_FILE) { FileInterface.identity = FileInterfaceIdentity.SELF_DESCRIBE; var target = targets[0]; string filename = targets[0].ToString(); target.BigEndian = FileWatch.currentSession.bigEndian; CloseActiveTargets(false); FileInterface fi = null; Action <object, EventArgs> action = (ob, ea) => { fi = new FileInterface(target); if (FileWatch.currentSession.useCacheAndMultithread) { fi.getMemoryDump(); } }; Action <object, EventArgs> postAction = (ob, ea) => { if (fi == null || fi.lastMemorySize == null) { MessageBox.Show("Failed to load target"); S.GET <StubForm>().DisableTargetInterface(); return; } FileWatch.currentSession.targetShortName = fi.ShortFilename; FileWatch.currentSession.targetFullName = fi.Filename; FileWatch.currentSession.fileInterface = fi; S.GET <StubForm>().lbTarget.Text = fi.GetType().ToString() + "|MemorySize:" + fi.lastMemorySize.ToString(); if (VanguardCore.vanguardConnected) { UpdateDomains(); } //Refresh the UI //RefreshUIPostLoad(); }; S.GET <StubForm>().RunProgressBar($"Loading target...", 0, action, postAction); } else //MULTIPLE_FILE { switch (currentSession.selectedTargetType) { case TargetType.MULTIPLE_FILE_SINGLEDOMAIN: FileInterface.identity = FileInterfaceIdentity.SELF_DESCRIBE; break; case TargetType.MULTIPLE_FILE_MULTIDOMAIN: default: FileInterface.identity = FileInterfaceIdentity.HASHED_PREFIX; break; case TargetType.MULTIPLE_FILE_MULTIDOMAIN_FULLPATH: FileInterface.identity = FileInterfaceIdentity.FULL_PATH; break; } foreach (var target in targets) { target.BigEndian = FileWatch.currentSession.bigEndian; } var mfi = new MultipleFileInterface(targets, FileWatch.currentSession.bigEndian, FileWatch.currentSession.useAutomaticBackups); if (FileWatch.currentSession.useCacheAndMultithread) { mfi.getMemoryDump(); } FileWatch.currentSession.fileInterface = mfi; if (VanguardCore.vanguardConnected) { FileWatch.UpdateDomains(); } S.GET <StubForm>().lbTarget.Text = mfi.ShortFilename + "|MemorySize:" + mfi.lastMemorySize.ToString(); StockpileManagerEmuSide.UnCorruptBL = null; } return(true); }
internal static bool LoadTarget() { FileInterface.identity = FileInterfaceIdentity.HASHED_PREFIX; string filename = null; OpenFileDialog OpenFileDialog1; OpenFileDialog1 = new OpenFileDialog(); OpenFileDialog1.Title = "Select the Game Executable"; OpenFileDialog1.Filter = "Executable Files|*.exe"; OpenFileDialog1.RestoreDirectory = true; if (OpenFileDialog1.ShowDialog() == DialogResult.OK) { if (OpenFileDialog1.FileName.ToString().Contains('^')) { MessageBox.Show("You can't use a file that contains the character ^ "); return(false); } filename = OpenFileDialog1.FileName; } else { return(false); } if (!CloseTarget(false)) { return(false); } FileInfo unityExeFile = new FileInfo(filename); UnityWatch.currentFileInfo.targetShortName = unityExeFile.Name; UnityWatch.currentFileInfo.targetFullName = unityExeFile.FullName; DirectoryInfo unityFolder = unityExeFile.Directory; var allFiles = DirSearch(unityFolder.FullName).ToArray(); if (allFiles.FirstOrDefault(it => it.ToUpper().Contains("UNITY")) == null) { MessageBox.Show("Could not find unity files"); return(false); } var allDllFiles = allFiles.Where(it => it.ToUpper().EndsWith(".DLL")).ToArray(); var allUnityDllFiles = allDllFiles.Where(it => it.ToUpper().Contains("UNITY")).ToArray(); var unityEngineDll = allDllFiles.Where(it => it.ToUpper().Contains("UNITYENGINE.DLL")).ToArray(); List <string> targetFiles = new List <string>(); switch (UnityWatch.currentFileInfo.selectedTargetType) { case TargetType.UNITYEXE: targetFiles.Add(unityExeFile.FullName); break; case TargetType.UNITYEXE_ALLDLL: targetFiles.Add(unityExeFile.FullName); targetFiles.AddRange(allDllFiles); break; case TargetType.UNITYEXE_UNITYDLL: targetFiles.Add(unityExeFile.FullName); targetFiles.AddRange(allUnityDllFiles); break; case TargetType.UNITYEXE_KNOWNDLL: targetFiles.Add(unityExeFile.FullName); var allKnownGames = allDllFiles.Where(it => it.ToUpper().Contains("PHYSICS") || it.ToUpper().Contains("CLOTH") || it.ToUpper().Contains("ANIMATION") || it.ToUpper().Contains("PARTICLE") || it.ToUpper().Contains("TERRAIN") || it.ToUpper().Contains("VEHICLES") || it.ToUpper().Contains("UNITYENGINE.DLL") ).ToArray(); targetFiles.AddRange(allKnownGames); break; case TargetType.ALLTHEGAME: targetFiles.AddRange(allFiles); break; case TargetType.UNITYENGINE: targetFiles.AddRange(unityEngineDll); break; } string multipleFiles = ""; for (int i = 0; i < targetFiles.Count; i++) { multipleFiles += targetFiles[i]; if (i < targetFiles.Count - 1) { multipleFiles += "|"; } } var mfi = new MultipleFileInterface(multipleFiles, UnityWatch.currentFileInfo.bigEndian, UnityWatch.currentFileInfo.useAutomaticBackups); if (UnityWatch.currentFileInfo.useCacheAndMultithread) { mfi.getMemoryDump(); } UnityWatch.currentFileInfo.targetInterface = mfi; Executor.unityExeFile = unityExeFile.FullName; StockpileManagerEmuSide.UnCorruptBL = null; if (VanguardCore.vanguardConnected) { UnityWatch.UpdateDomains(); } return(true); }