private void DoInjection(AttachDetails attachDetails) { Process[] processes = attachDetails.Processes; for (int i = 0; i < processes.Length; i++) { int percentComplete = (int)(((float)(i + 1) / (float)processes.Length) * 100.0f); progress.ProgressUpdate("Injecting logging agent" + ((processes.Length == 1) ? "" : "s"), percentComplete); RemoteHooking.Inject(processes[i].Id, AGENT_DLL, AGENT_DLL, serverChannelName, details.SoftwallRules); } }
private void DoStartCapture() { try { PrepareCapture(); int[] processIds; if (details is CreateDetails) { CreateDetails createDetails = details as CreateDetails; int processId = DoCreation(createDetails); processIds = new int[1] { processId }; } else if (details is AttachDetails) { AttachDetails attachDetails = details as AttachDetails; DoInjection(attachDetails); processIds = attachDetails.ProcessIds; } else { throw new NotImplementedException(); } if (WaitForAllClientsToPingUs(processIds)) { progress.OperationComplete(); } else { progress.OperationFailed("Capture aborted."); } } catch (Exception e) { progress.OperationFailed(e.Message); UnprepareCapture(false); } progress = null; startWorkerThread = null; }
public AttachDetails GetDetails() { AttachDetails details = null; if (ShowDialog() == DialogResult.OK) { List<Process> procList = new List<Process>(); foreach (ListViewItem item in processView.Items) { if (item.Checked) procList.Add(item.Tag as Process); } details = new AttachDetails(procList.ToArray()); } return details; }
public AttachDetails GetDetails() { AttachDetails details = null; if (ShowDialog() == DialogResult.OK) { List <Process> procList = new List <Process>(); foreach (ListViewItem item in processView.Items) { if (item.Checked) { procList.Add(item.Tag as Process); } } details = new AttachDetails(procList.ToArray()); } return(details); }