Exemple #1
0
        private void UpdateDisassemblyToolStripButton_Click(object sender, EventArgs e)
        {
            ulong address = Convert.ToUInt64(DisassemblyAddress.Text, 16);

            byte[] memory = OrbisDbg.GetMemory(address, 0x200);

            UpdateDisassembly(address, memory, ShowBytesCheckBox.Checked);
        }
Exemple #2
0
 public static float[] ReadFloats(ulong offset, int arrayLength = 3)
 {
     float[] vec = new float[arrayLength];
     for (int i = 0; i < arrayLength; i++)
     {
         byte[] buffer = OrbisDbg.GetMemory(offset + ((uint)i * 4), 4);
         vec[i] = BitConverter.ToSingle(buffer, 0);
     }
     return(vec);
 }
Exemple #3
0
        private void UpdateFormsOnPaused()
        {
            OrbisDbg.registers regs = OrbisDbg.GetRegisters();

            if (!bUpdatedOnPause)
            {
                bool  isBreakpoint = OrbisDbg.Ext.ReadByte(regs.r_rip - 1) == 0xCC;
                ulong breakAddress = isBreakpoint ? regs.r_rip - 1 : regs.r_rip;

                if (isBreakpoint)
                {
                    for (int i = 0; i < breakpoints.Count; i++)
                    {
                        if (breakpoints[i].address == breakAddress)
                        {
                            OrbisDbg.Ext.WriteByte(breakAddress, breakpoints[i].instruction);
                            break;
                        }
                    }

                    regs.r_rip -= 1;
                    OrbisDbg.SetRegisters(regs);
                }

                if (memoryForm != null)
                {
                    memoryForm.UpdateMemoryView(regs.r_rip, 0x1000, OrbisDbg.GetMemory(regs.r_rip, 0x1000));
                }

                if (registersForm != null)
                {
                    registersForm.UpdateRegisterWindow(regs);
                }
            }

            if (disassemblyForm != null && regs.r_rip != PreviousRip)
            {
                if (PreviousRip != 0 && regs.r_rip > PreviousRip && regs.r_rip - PreviousRip < 0xD0)
                {
                    disassemblyForm.UpdateDisassemblyKeepMemory(regs.r_rip);
                }
                else
                {
                    PreviousRip = regs.r_rip;
                    byte[] memory = OrbisDbg.GetMemory(regs.r_rip, 0x100);
                    disassemblyForm.UpdateDisassembly(regs.r_rip, memory, disassemblyForm.IsShowingBytes());
                }
            }

            bUpdatedOnPause = true;
        }
Exemple #4
0
        private void PeekToolStripButton_Click(object sender, EventArgs e)
        {
            ulong address = Convert.ToUInt64(AddressToolStripTextBox.Text, 16);
            int   size    = Convert.ToInt32(LengthToolStripTextBox.Text, 16);

            this.address = address;
            this.offset  = 0;

            byte[] memory = OrbisDbg.GetMemory(address, size);

            MemoryData = memory;
            MemoryStream stream = new MemoryStream(MemoryData);

            MemoryViewHexBox.ByteProvider = new DynamicFileByteProvider(stream);
        }
Exemple #5
0
        private void backtracePointerToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (pointers.Count > 0)
            {
                ulong address = pointers.Pop().address;
                AddressToolStripTextBox.Text = "0x" + address.ToString("X");

                if (address != 0x0)
                {
                    byte[] memory = OrbisDbg.GetMemory(address, Convert.ToInt32(LengthToolStripTextBox.Text, 16));

                    MemoryData = memory;
                    MemoryStream stream = new MemoryStream(MemoryData);
                    MemoryViewHexBox.ByteProvider = new DynamicFileByteProvider(stream);
                }
            }
        }
Exemple #6
0
        private void followPointerToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ulong previousAddress = 0x0;

            if (pointers.Count > 0)
            {
                previousAddress = pointers.Peek().address;
            }

            pointers.Push(new Pointers(address + offset));

            ulong newAddress = OrbisDbg.Ext.ReadUInt64(address + offset);

            AddressToolStripTextBox.Text = "0x" + newAddress.ToString("X");

            byte[] memory = OrbisDbg.GetMemory(newAddress, Convert.ToInt32(LengthToolStripTextBox.Text, 16));

            MemoryData = memory;
            MemoryStream stream = new MemoryStream(MemoryData);

            MemoryViewHexBox.ByteProvider = new DynamicFileByteProvider(stream);
        }
Exemple #7
0
 public static double ReadDouble(ulong offset)
 {
     byte[] buffer = OrbisDbg.GetMemory(offset, 8);
     return(BitConverter.ToDouble(buffer, 0));
 }
Exemple #8
0
 public static ulong ReadUInt64(ulong offset)
 {
     byte[] buffer = OrbisDbg.GetMemory(offset, 8);
     return(BitConverter.ToUInt64(buffer, 0));
 }
Exemple #9
0
 public static float ReadFloat(ulong offset)
 {
     byte[] buffer = OrbisDbg.GetMemory(offset, 4);
     return(BitConverter.ToSingle(buffer, 0));
 }
Exemple #10
0
 public static uint ReadUInt32(ulong offset)
 {
     byte[] buffer = OrbisDbg.GetMemory(offset, 4);
     return(BitConverter.ToUInt32(buffer, 0));
 }
Exemple #11
0
 public static ushort ReadUInt16(ulong offset)
 {
     byte[] buffer = OrbisDbg.GetMemory(offset, 2);
     return(BitConverter.ToUInt16(buffer, 0));
 }
Exemple #12
0
 public static byte[] ReadBytes(ulong offset, int length)
 {
     byte[] buffer = OrbisDbg.GetMemory(offset, length);
     return(buffer);
 }
Exemple #13
0
 public static byte ReadByte(ulong offset)
 {
     byte[] buffer = OrbisDbg.GetMemory(offset, 1);
     return(buffer[0]);
 }
Exemple #14
0
 public static bool ReadBool(ulong offset)
 {
     byte[] buffer = OrbisDbg.GetMemory(offset, 1);
     return(buffer[0] != 0);
 }