Beispiel #1
0
        private void BreakProcess()
        {
            if (!OrbisDbg.IsProcessPaused())
            {
                if (OrbisDbg.SendProcessSignal(OrbisDbg.SIGNALS.SIGSTOP) == 0)
                {
                    return;
                }

                if (breakpoints.Count > 0)
                {
                    for (int i = 0; i < breakpoints.Count; i++)
                    {
                        Breakpoint bp = breakpoints[i];
                        if (SelectedProcess.Equals(bp.process) && bp.enabled)
                        {
                            OrbisDbg.Ext.WriteByte(bp.address, bp.instruction);
                        }
                    }
                }

                /*OrbisDbg.registers regs = OrbisDbg.GetRegisters();
                 *
                 * if (registersForm != null)
                 *  registersForm.UpdateRegisterWindow(regs);
                 *
                 * if(memoryForm != null)
                 *  memoryForm.UpdateMemoryView(regs.r_rip, 0x1000, OrbisDbg.GetMemory(regs.r_rip, 0x1000));
                 *
                 * if(disassemblyForm != null)
                 *  disassemblyForm.UpdateDisassembly(regs.r_rip, OrbisDbg.GetMemory(regs.r_rip, 0x100), disassemblyForm.IsShowingBytes());*/

                OrbisDbg.SetSingleStep();
            }
        }
Beispiel #2
0
        private void ContinueProcess()
        {
            bUpdatedOnPause = false;
            PreviousRip     = 0x0;

            if (OrbisDbg.IsProcessPaused())
            {
                OrbisDbg.ClearSingleStep();

                if (breakpoints.Count > 0)
                {
                    for (int i = 0; i < breakpoints.Count; i++)
                    {
                        Breakpoint bp = breakpoints[i];
                        if (SelectedProcess.Equals(bp.process) && bp.enabled)
                        {
                            OrbisDbg.Ext.WriteByte(bp.address, 0xCC);
                        }
                    }
                }

                if (registersForm != null)
                {
                    registersForm.FreezeRegisters();
                }

                if (disassemblyForm != null)
                {
                    disassemblyForm.ClearDisassembly();
                }

                OrbisDbg.ContinueProcess();
            }
        }
Beispiel #3
0
 private void SetRegistersButton_Click(object sender, EventArgs e)
 {
     if (OrbisDbg.IsProcessPaused())
     {
         OrbisDbg.SetRegisters(GetRegisters());
     }
     else
     {
         MessageBox.Show("The process must be paused before you can get/set registers", "Error Getting Registers");
     }
 }
Beispiel #4
0
 private static void CheckForPausedStateThread(MainForm main)
 {
     while (true)
     {
         bool isPaused = OrbisDbg.IsProcessPaused();
         if (isPaused)
         {
             main.Invoke((MethodInvoker) delegate() { main.UpdateFormsOnPaused(); });
         }
         Thread.Sleep(500);
     }
 }
Beispiel #5
0
        private void StepProcess()
        {
            if (OrbisDbg.IsProcessPaused())
            {
                OrbisDbg.SingleStep();

                if (registersForm != null)
                {
                    registersForm.UpdateRegisterWindow(OrbisDbg.GetRegisters());
                }
            }
        }
Beispiel #6
0
 private void Register_DoubleClick(object sender, EventArgs e)
 {
     if (OrbisDbg.IsProcessPaused())
     {
         TextBox textBox = sender as TextBox;
         registerValue     = textBox.Text;
         textBox.ReadOnly  = false;
         textBox.ForeColor = Color.Red;
     }
     else
     {
         MessageBox.Show("The process must be paused before you can get/set registers", "Error Getting Registers");
     }
 }