private void btnInjectSelected_Click(object sender, EventArgs e) { if (WGH_Core.currentMemoryInterface == null) { MessageBox.Show("No target is loaded"); return; } TerminateIfNeeded(); StashKey sk = null; if (lbStashHistory.SelectedIndex != -1) { sk = (StashKey)lbStashHistory.SelectedItem; } else if (lbStockpile.SelectedIndex != -1) { sk = (StashKey)lbStockpile.SelectedItem; } if (sk != null) { WGH_Core.RestoreTarget(); sk.Run(); WGH_Executor.Execute(); } }
private void WGH_MainForm_FormClosing(object sender, FormClosingEventArgs e) { if (WGH_Core.currentMemoryInterface != null) { WGH_Core.RestoreTarget(); } }
public static bool MergeStashkeys(List <StashKey> sks, bool _stashAfterOperation = true) { if (sks != null && sks.Count > 1) { BlastLayer bl = new BlastLayer(); foreach (StashKey item in sks) { bl.Layer.AddRange(item.BlastLayer.Layer); } StashKey newSk = new StashKey(WGH_Core.GetRandomKey(), bl); WGH_Core.ghForm.lbStashHistory.Items.Add(newSk); WGH_Core.ghForm.RefreshStashHistory(); WGH_Core.RestoreTarget(); newSk.Run(); WGH_Executor.Execute(); return(true); } else { MessageBox.Show("You need 2 or more items for Merging"); return(false); } }
public void BlastTarget(int times = 1, bool untilFound = false, bool stashBlastLayer = true) { if (WGH_Core.currentMemoryInterface is ProcessInterface) { (WGH_Core.currentMemoryInterface as ProcessInterface).RefreshSize(); } if (WGH_Core.currentMemoryInterface == null) { MessageBox.Show("No target is loaded"); return; } TerminateIfNeeded(); if (WGH_Core.currentMemoryInterface == null) { return; } WGH_Core.RestoreTarget(); for (int i = 0; i < times; i++) { var bl = WGH_Core.Blast(); if (bl != null) { WGH_Core.currentStashkey = new StashKey(WGH_Core.GetRandomKey(), bl); if (stashBlastLayer) { DontLoadSelectedStash = true; lbStashHistory.Items.Add(WGH_Core.currentStashkey); lbStashHistory.ClearSelected(); lbStashHistory.SelectedIndex = lbStashHistory.Items.Count - 1; lbStockpile.ClearSelected(); } if (untilFound) { break; } } } WGH_Executor.Execute(); }
private void btnLoadCorrupt_Click(object sender, EventArgs e) { BlastLayer bl = new BlastLayer(); foreach (var item in lbBlastLayer.Items) { BlastUnit bu = (item as BlastUnit); if (bu.IsEnabled) { bl.Layer.Add(bu); } } StashKey newSk = (StashKey)sk.Clone(); newSk.BlastLayer = bl; WGH_Core.RestoreTarget(); newSk.Run(); WGH_Executor.Execute(); }
private void btnRerollInject_Click(object sender, EventArgs e) { if (WGH_Core.currentMemoryInterface == null) { MessageBox.Show("No target is loaded"); return; } TerminateIfNeeded(); StashKey sk = null; if (lbStashHistory.SelectedIndex != -1) { sk = (StashKey)lbStashHistory.SelectedItem; } else if (lbStockpile.SelectedIndex != -1) { sk = (StashKey)lbStockpile.SelectedItem; } if (sk != null) { StashKey newSk = (StashKey)sk.Clone(); newSk.Key = WGH_Core.GetRandomKey(); newSk.Alias = null; WGH_Core.ghForm.DontLoadSelectedStash = true; WGH_Core.ghForm.lbStashHistory.Items.Add(newSk); WGH_Core.ghForm.lbStashHistory.ClearSelected(); WGH_Core.ghForm.lbStashHistory.SelectedIndex = WGH_Core.ghForm.lbStashHistory.Items.Count - 1; WGH_Core.ghForm.lbStockpile.ClearSelected(); //TODO: Refactor this properly instead of as a hacky mess foreach (BlastUnit bu in newSk.BlastLayer.Layer) { var bb = (bu as BlastByte); var bv = (bu as BlastVector); //BAD HACK. USE THIS TO DECTECT IF VECTOR. SORRY I DIDN'T KNOW WHERE TO REFACTOR THIS -NARRY if (bb != null) { if (bb.Type == BlastByteType.SET) { bb.Value = WGH_Core.RND.Next(0, 255); } else if (bb.Type == BlastByteType.ADD || bb.Type == BlastByteType.SUBSTRACT) { int result = WGH_Core.RND.Next(1, 3); switch (result) { case 1: bb.Type = BlastByteType.ADD; break; case 2: bb.Type = BlastByteType.SUBSTRACT; break; } } } if (bv != null) { bv.Values = WGH_VectorEngine.getRandomConstant(WGH_VectorEngine.valueList); } } WGH_Core.RestoreTarget(); newSk.Run(); WGH_Executor.Execute(); } }
public static void LoadTarget() { if (WGH_Core.ghForm.rbTargetFile.Checked) { OpenFileDialog OpenFileDialog1; OpenFileDialog1 = new OpenFileDialog(); OpenFileDialog1.Title = "Open File"; OpenFileDialog1.Filter = "files|*.*"; 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; } currentTargetId = "File|" + OpenFileDialog1.FileName.ToString(); currentTargetFullName = OpenFileDialog1.FileName.ToString(); } else { return; } //Disable caching of the previously loaded file if it was enabled if (ghForm.btnEnableCaching.Text == "Disable caching on current target") { ghForm.btnEnableCaching.PerformClick(); } if (currentMemoryInterface != null && (currentTargetType == "Dolphin" || currentTargetType == "File" || currentTargetType == "MultipleFiles")) { WGH_Core.RestoreTarget(); currentMemoryInterface.stream?.Dispose(); } currentTargetType = "File"; var fi = new FileInterface(currentTargetId); currentTargetName = fi.ShortFilename; currentMemoryInterface = fi; ghForm.lbTarget.Text = currentTargetId + "|MemorySize:" + fi.lastMemorySize.ToString(); } else if (WGH_Core.ghForm.rbTargetMultipleFiles.Checked) { if (smForm != null) { smForm.Close(); } smForm = new WGH_SelectMultipleForm(); if (smForm.ShowDialog() != DialogResult.OK) { WGH_Core.currentMemoryInterface = null; return; } currentTargetType = "MultipleFiles"; var mfi = (MultipleFileInterface)WGH_Core.currentMemoryInterface; currentTargetName = mfi.ShortFilename; ghForm.lbTarget.Text = mfi.ShortFilename + "|MemorySize:" + mfi.lastMemorySize.ToString(); } else if (WGH_Core.ghForm.rbTargetProcess.Checked) { if (hpForm != null) { hpForm.Close(); } hpForm = new WGH_HookProcessForm(); if (hpForm.ShowDialog() != DialogResult.OK) { WGH_Core.currentMemoryInterface = null; return; } currentTargetType = "Process"; var mfi = (ProcessInterface)WGH_Core.currentMemoryInterface; currentTargetName = mfi.ProcessName; ghForm.lbTarget.Text = mfi.ProcessName + "|MemorySize:" + mfi.lastMemorySize.ToString(); } if (WGH_Core.ghForm.rbTargetDolphin.Checked) { OpenFileDialog OpenFileDialog1; OpenFileDialog1 = new OpenFileDialog(); OpenFileDialog1.Title = "Open File"; OpenFileDialog1.Filter = "Dolphin Savestates|*.state;*.s01;*.s02;*.s03;*.s04;*.s05;*.s06;*.s07;*.s08;*.s09;*.sav|All Files|*.*"; 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 ^ "); } currentTargetId = "Dolphin|" + OpenFileDialog1.FileName.ToString(); currentTargetFullName = OpenFileDialog1.FileName.ToString(); } else { return; } //Disable caching of the previously loaded file if it was enabled if (ghForm.btnEnableCaching.Text == "Disable caching on current target") { ghForm.btnEnableCaching.PerformClick(); } if (currentMemoryInterface != null && (currentTargetType == "Dolphin" || currentTargetType == "File" || currentTargetType == "MultipleFiles")) { WGH_Core.RestoreTarget(); currentMemoryInterface.stream?.Dispose(); } currentTargetType = "Dolphin"; var di = new DolphinInterface(currentTargetId); currentTargetName = di.ShortFilename; currentMemoryInterface = di; ghForm.lbTarget.Text = currentTargetId + "|MemorySize:" + di.lastMemorySize.ToString(); currentDolphinSavestate = di.getCorruptFilename(); //Cache the new file ghForm.btnEnableCaching.PerformClick(); //Update the savestate info. if (WGH_Core.ssForm != null) { WGH_Core.ssForm.GetSavestateInfo(); } } /* * else if (WGH_Core.ghForm.rbTargetDolphin.Checked) * { * * currentTargetType = "Dolphin"; * //var mfi = (DolphinInterface)WGH_Core.currentMemoryInterface; * WGH_Core.currentMemoryInterface = new DolphinInterface("Test"); * currentTargetName = "Dolphin"; * ghForm.lbTarget.Text = currentTargetName + "|MemorySize:" + WGH_Core.currentMemoryInterface.lastMemorySize.ToString(); * }*/ }