private void btnInject_Click(object sender, EventArgs e) { MonoProcess target = (MonoProcess)cbProcesses.SelectedItem; if (target == null) { return; } target.Process.Refresh(); if (target.Process.HasExited) { OnError("The target process has exited"); return; } string assembly, name_space, klass, method; if (string.IsNullOrEmpty((assembly = txtAssembly.Text))) { return; } if (string.IsNullOrEmpty((name_space = txtNamespace.Text))) { return; } if (string.IsNullOrEmpty((klass = txtClass.Text))) { return; } if (string.IsNullOrEmpty((method = txtMethod.Text))) { return; } byte[] data = null; try { data = File.ReadAllBytes(assembly); } catch (Exception ex) { OnError($"Could not read the file '{assembly}': {ex.Message}"); return; } try { Injector.Instance.Inject(new InjectionConfig { Process = target.Process, Assembly = data, AssemblyPath = assembly, Namespace = name_space, Class = klass, Method = method }); } catch (Exception ex) { OnError($"An error occurred during injection: {ex.Message}{Environment.NewLine}{ex.StackTrace}"); } }
private void btnInject_Click(object sender, EventArgs e) { MonoProcess target = (MonoProcess)cbProcesses.SelectedItem; if (target == null) { return; } target.Process.Refresh(); if (target.Process.HasExited) { OnError("The target process has exited"); return; } if (_injector == null || _injector.ProcessHandle != target.Process.Handle) { _injector = new Injector(target.Process.Handle); } string assembly = txtAssembly.Text; if (!Utils.ReadFile(assembly, out byte[] bytes))
private void RefreshProcesses() { cbProcesses.Items.Clear(); cbProcesses.ResetText(); cbProcesses.Items.AddRange(MonoProcess.GetProcesses()); if (cbProcesses.Items.Count > 0) { cbProcesses.SelectedIndex = 0; } }