Exemplo n.º 1
0
        private void objectsListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            domainTraverser.curObject = objectsListBox.SelectedItem;

            if (domainTraverser.curObject != null)
            {
                fieldsListBox.Items.Clear();
                instanceMethodListBox.Items.Clear();
                propertiesListBox.Items.Clear();

                try
                {
                    foundObject objectFound = domainTraverser.curObject as foundObject;
                    if (objectFound != null)
                    {
                        setConstant.Text          = objectFound.addrOfObj.ToString("X");
                        domainTraverser.curObject = objectFound.targetObject;
                    }

                    if (domainTraverser.curObject != null)
                    {
                        MethodInfo[] instanceMethods = domainTraverser.curObject.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
                        instanceMethodListBox.Items.AddRange(instanceMethods);

                        fields = domainTraverser.curObject.GetType().GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
                        fieldsListBox.Items.AddRange(fields);

                        properties = domainTraverser.curObject.GetType().GetProperties(BindingFlags.Static | BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic);
                        propertiesListBox.Items.AddRange(properties);
                    }
                }
                catch (Exception) { }
            }
        }
Exemplo n.º 2
0
        private void objTreeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            TreeNode theSelectedNode = objTreeView.SelectedNode;

            if (foundObjectsDict.ContainsKey(theSelectedNode))
            {
                domainTraverser.curObject = foundObjectsDict[theSelectedNode];

                fieldsListBox.Items.Clear();
                instanceMethodListBox.Items.Clear();
                propertiesListBox.Items.Clear();

                try
                {
                    foundObject objectFound = domainTraverser.curObject as foundObject;
                    if (objectFound != null)
                    {
                        setConstant.Text          = objectFound.addrOfObj.ToString("X");
                        domainTraverser.curObject = objectFound.targetObject;
                    }

                    if (domainTraverser.curObject != null)
                    {
                        MethodInfo[] instanceMethods = domainTraverser.curObject.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
                        instanceMethodListBox.Items.AddRange(instanceMethods);

                        fields = domainTraverser.curObject.GetType().GetFields(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
                        fieldsListBox.Items.AddRange(fields);

                        properties = domainTraverser.curObject.GetType().GetProperties(BindingFlags.Static | BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic);
                        propertiesListBox.Items.AddRange(properties);
                    }
                }
                catch (Exception) { }
            }
            else if (propertiesDict.ContainsKey(theSelectedNode))
            {
                properyInfoString = propertiesDict[theSelectedNode].ToString();
            }
            else if (fieldsDict.ContainsKey(theSelectedNode))
            {
                fieldInfoString = fieldsDict[theSelectedNode].ToString();
            }
        }
Exemplo n.º 3
0
        private void changeObjTree()
        {
            try
            {
                objTreeView.Nodes.Clear();
                object thisObj = null;

                foreach (object obj in objectsListBox.Items)
                {
                    foundObject objectFound = obj as foundObject;

                    if (objectFound == null)
                    {
                        continue;
                    }

                    thisObj = objectFound.targetObject;

                    TreeNode thisObjectTN = new TreeNode(objectFound.name);
                    foundObjectsDict.Add(thisObjectTN, thisObj);

                    TreeNode newObject = new TreeNode("Properties");
                    newObject = getAllProperties(newObject, thisObj);
                    thisObjectTN.Nodes.Add(newObject);

                    newObject = new TreeNode("Fields");
                    newObject = getAllFields(newObject, thisObj);
                    thisObjectTN.Nodes.Add(newObject);

                    objTreeView.Nodes.Add(thisObjectTN);
                }

                objectsListBox.Items.Clear();
                foreach (KeyValuePair <TreeNode, object> entry in foundObjectsDict)
                {
                    objectsListBox.Items.Add(entry.Value);
                }
            }
            catch { }
        }
Exemplo n.º 4
0
        public static void getAddresses(System.Windows.Forms.ListBox objectsListBox)
        {
            //see if clr is version 2 or 4
            clrVersion = Environment.Version.ToString().ElementAt(0);

            object        thisObject     = objectsListBox.SelectedItem;
            object        foundObject    = null;
            IntPtr        obj            = IntPtr.Zero;
            IntPtr        methodTable    = IntPtr.Zero;
            List <IntPtr> matchedObjects = null;

            objectsListBox.Items.Clear();
            objectsListBox.Items.Add(thisObject);

            if (thisObject.GetType() == typeof(foundObject))
            {
                foundObject thisFoundObject = thisObject as foundObject;
                thisObject = thisFoundObject.targetObject;
            }

            //set subAmount on stack for each clr version
            if (IntPtr.Size == 4 && clrVersion == '2')
            {
                if (clrVersion == '2')
                {
                    clrSub = 1;
                }
                else if (clrVersion == '4')
                {
                    clrSub = 2;
                }
            }

            if (IntPtr.Size == 4)
            {
                obj = getObjectAddr(thisObject);
                // System.Windows.Forms.MessageBox.Show("OG Object is at " + obj.ToString("X"));

                methodTable = getObjectMethodTable(obj, getMethodTablex86);

                if (methodTable == IntPtr.Zero)
                {
                    return;
                }

                Console.WriteLine("OG Object is at " + obj.ToString("X"));
                Console.WriteLine("method table is at " + methodTable.ToString("X"));

                // System.Windows.Forms.MessageBox.Show("OG Object is at " + obj.ToString("X"));
                // System.Windows.Forms.MessageBox.Show("method table is at " + methodTable.ToString("X"));
                matchedObjects = getAllObjects(obj, methodTable, getMethodTablex86, getMethodTablex86);
            }
            else if (IntPtr.Size == 8)
            {
                obj = getObjectAddr64(thisObject);
                // System.Windows.Forms.MessageBox.Show("OG Object is at " + obj.ToString("X"));

                methodTable = getObjectMethodTable(obj, getMethodTablex64);
                //   System.Windows.Forms.MessageBox.Show("OG MEtodTable is at " + methodTable.ToString("X"));

                matchedObjects = getAllObjects(obj, methodTable, getMethodTablex64, get3rdEntryx64);
            }


            //unsure if this foreach is needed right now... just take matchedObjects to array?
            foreach (IntPtr actualObj in matchedObjects)
            {
                if (actualObj != null)
                {
                    if (IntPtr.Size == 4)
                    {
                        foundObject = GetInstance(actualObj);
                    }
                    else if (IntPtr.Size == 8)
                    {
                        foundObject = GetInstance64(actualObj);
                    }

                    //avoid all the thinLocked objects
                    // var lockedBySomeoneElse = !System.Threading.Monitor.TryEnter(foundObject);
                    // if (!lockedBySomeoneElse)
                    // {
                    //  System.Threading.Monitor.Exit(foundObject);
                    foundObject objTarget = new foundObject();
                    objTarget.targetObject = foundObject;
                    objTarget.name         = thisObject.ToString();
                    objTarget.addrOfObj    = actualObj;
                    objectsListBox.Items.Add(objTarget);
                    //}
                }
            }
            // System.Windows.Forms.MessageBox.Show("num of objects is " + objectsListBox.Items.Count);
        }