Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 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);
     }
 }