private void createFunctionButton_Click(object sender, EventArgs e)
        {
            var info = GetSelectedInfo();

            if (info == null)
            {
                return;
            }

            var disassembler         = new Disassembler(process.CoreFunctions);
            var functionStartAddress = disassembler.RemoteGetFunctionStartAddress(process, info.DebugInfo.ExceptionAddress);

            if (functionStartAddress.IsNull())
            {
                MessageBox.Show("Could not find the start of the function. Aborting.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error);

                return;
            }

            var node = ClassNode.Create();

            node.Address = functionStartAddress;
            node.AddNode(new FunctionNode
            {
                Comment = info.Instructions[2].Instruction
            });

            var mainForm = Application.OpenForms[0] as MainForm;

            mainForm.ClassView.SelectedClass = node;
        }
Beispiel #2
0
        private void newClassToolStripButton_Click(object sender, EventArgs e)
        {
            var node = ClassNode.Create();

            node.AddBytes(64);

            classesView.SelectedClass = node;
        }
Beispiel #3
0
        /// <summary>Called when the node was created. Creates a new class as inner node.</summary>
        public override void Intialize()
        {
            var node = ClassNode.Create();

            node.Intialize();
            node.AddBytes(64);
            InnerNode = node;
        }
        public override void Initialize()
        {
            var node = ClassNode.Create();

            node.Initialize();
            node.AddBytes(64);
            ChangeInnerNode(node);
        }
Beispiel #5
0
        private void createClassAtAddressToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var address = GetSelectedRegionAddress();

            if (address != IntPtr.Zero)
            {
                var node = ClassNode.Create();
                node.Address = address;
                node.AddBytes(64);

                classesView.SelectedClass = node;
            }
        }
Beispiel #6
0
        /// <summary>Creates a new default class.</summary>
        public void CreateNewDefaultClass()
        {
            var node = ClassNode.Create();

            node.AddBytes(64);

            var mainModule = remoteProcess.GetModuleByName(remoteProcess.UnderlayingProcess?.Name);

            if (mainModule != null)
            {
                node.Address = mainModule.Start;
            }

            classesView.SelectedClass = node;
        }
Beispiel #7
0
        private void createClassAtAddressToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var node = ClassNode.Create();

            node.AddBytes(64);

            if (GetToolStripSourceControl(sender) == modulesDataGridView)
            {
                node.Address = GetSelectedModule()?.Start ?? IntPtr.Zero;
            }
            else
            {
                node.Address = GetSelectedSection()?.Start ?? IntPtr.Zero;
            }

            classesView.SelectedClass = node;
        }
        public static ClassNode CreateClassAtAddress(IntPtr address, bool addDefaultBytes)
        {
            Contract.Ensures(Contract.Result <ClassNode>() != null);

            var classView = Program.MainForm.ClassView;

            var node = ClassNode.Create();

            node.Address = address;
            if (addDefaultBytes)
            {
                node.AddBytes(64);
            }

            classView.SelectedClass = node;

            return(node);
        }
        public static ClassNode CreateClassAtAddress(IntPtr address, bool addDefaultBytes)
        {
            Contract.Ensures(Contract.Result <ClassNode>() != null);

            var classView = Program.MainForm.ProjectView;

            var node = ClassNode.Create();

            node.AddressFormula = address.ToString("X");
            if (addDefaultBytes)
            {
                node.AddBytes(16 * IntPtr.Size);
            }

            classView.SelectedClass = node;

            return(node);
        }
Beispiel #10
0
        private void createClassFromNodesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (selectedNodes.Count > 0 && !(selectedNodes[0].Node is ClassNode))
            {
                var parentNode = selectedNodes[0].Node.ParentNode as ClassNode;
                if (parentNode != null)
                {
                    var classNode = ClassNode.Create();
                    selectedNodes.Select(h => h.Node).ForEach(classNode.AddNode);

                    var classInstanceNode = new ClassInstanceNode();
                    classInstanceNode.ChangeInnerNode(classNode);

                    parentNode.InsertNode(selectedNodes[0].Node, classInstanceNode);

                    selectedNodes.Select(h => h.Node).ForEach(c => parentNode.RemoveNode(c));

                    ClearSelection();
                }
            }
        }
Beispiel #11
0
        private void createClassFromNodesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var selectedNodes = memoryViewControl.GetSelectedNodes();

            if (selectedNodes.Count > 0 && !(selectedNodes[0].Node is ClassNode))
            {
                if (selectedNodes[0].Node.GetParentContainer() is ClassNode parentNode)
                {
                    var newClassNode = ClassNode.Create();
                    selectedNodes.Select(h => h.Node).ForEach(newClassNode.AddNode);

                    var classInstanceNode = new ClassInstanceNode();
                    classInstanceNode.ChangeInnerNode(newClassNode);

                    parentNode.InsertNode(selectedNodes[0].Node, classInstanceNode);

                    selectedNodes.Select(h => h.Node).ForEach(c => parentNode.RemoveNode(c));

                    ClearSelection();
                }
            }
        }
Beispiel #12
0
 public override void Initialize()
 {
     InnerNode = ClassNode.Create();
     InnerNode.Initialize();
 }