internal void ThreadButtonState()
        {
            int LastSearchTime = Config.ButtonStateUpdateInterval;
            while (true)
            {
                if (Form.NTRConnection.HardwarePID != null)
                {
                    SearchCriteria Criteria = new SearchCriteria();
                    Criteria.ProcessID = BitConverter.ToUInt32(Utilities.GetByteArrayFromByteString(Form.NTRConnection.HardwarePID), 0);
                    Criteria.DataType = DataTypeExact.Bytes1;
                    Criteria.StartAddress = BUTTON_STATES_START;
                    Criteria.Length = BUTTON_STATES_SIZE;
                    Criteria.SearchType = SearchTypeBase.Unknown;
                    Criteria.SearchValue = new byte[] { 0 };
                    Criteria.Size = 1;
                    Criteria.HideSearch = true;
                    Form.NTRConnection.SearchCriteria.Add(Criteria);

                    Form.NTRConnection.SendReadMemoryPacket(Criteria);

                    ButtonState = (ButtonState)Criteria.AddressesFound[BUTTON_STATES_START + Offset_Button][0];
                    ShoulderState = (ShoulderState)Criteria.AddressesFound[BUTTON_STATES_START + Offset_Shoulder][0];
                    StickState = (StickState)Criteria.AddressesFound[BUTTON_STATES_START + Offset_Stick][0];
                    StickHoriz = Criteria.AddressesFound[BUTTON_STATES_START + Offset_Horiz][0];
                    StickVert = Criteria.AddressesFound[BUTTON_STATES_START + Offset_Vert][0];

                    LastSearchTime = Math.Max(LastSearchTime, (int)Criteria.Duration);

                    Form.NTRConnection.SetCurrentOperationText2 = ButtonState.ToString() + "|" + ShoulderState.ToString() + "|" + StickState.ToString() + "|" + StickHoriz + "|" + StickVert + "|" + LastSearchTime;
                }

                Thread.Sleep(LastSearchTime * 2);
            }
        }
 private void SearchButton_Click(object sender, EventArgs e)
 {
     uint Pointer = BitConverter.ToUInt32(Utilities.GetByteArrayFromByteString(TextAddress.Text).Reverse().ToArray(), 0);
     SearchCriteria Criteria = new SearchCriteria();
     Criteria.ProcessID = BitConverter.ToUInt32(Utilities.GetByteArrayFromByteString(ProcessID), 0);
     Criteria.DataType = DataTypeExact.Bytes4;
     if (CheckFullSearch.Checked)
     {
         Criteria.StartAddress = Criteria.Length = uint.MaxValue;
         Criteria.Length = 4;
     }
     else
     {
         KeyValuePair<uint, uint> KVP = MainForm.GetAddressSpaceForAddress(Pointer).Value;
         Criteria.StartAddress = KVP.Key;
         Criteria.Length = KVP.Value;
     }
     Criteria.Size = 4;
     Criteria.SearchType = SearchTypeBase.Range;
     Criteria.SearchValue = BitConverter.GetBytes(Pointer - BitConverter.ToUInt32(Utilities.GetByteArrayFromByteString(TextMaxOffset.Text.PadLeft(8, '0')).Reverse().ToArray(), 0));
     Criteria.SearchValue2 = BitConverter.GetBytes(Pointer);
     MainForm.NTRConnection.SearchCriteria.Add(Criteria);
     MainForm.NTRConnection.SendReadMemoryPacket(Criteria);
     foreach (var a in Criteria.AddressesFound.OrderByDescending(x => BitConverter.ToUInt32(x.Value, 0)).ThenBy(x => x.Key))
     {
         int RowIndex = ResultsDataGrid.Rows.Add();
         ResultsDataGrid[0, RowIndex].Value = Utilities.GetStringFromByteArray(BitConverter.GetBytes(a.Key).Reverse().ToArray());
         ResultsDataGrid[1, RowIndex].Value = Utilities.GetStringFromByteArray(BitConverter.GetBytes(Pointer - BitConverter.ToUInt32(a.Value, 0)).Reverse().ToArray()).TrimStart('0');
     }
 }
 internal byte[] GetMemoryAtAddress(uint ProcessID, uint Address, DataTypeExact DataType)
 {
     SearchCriteria Criteria = new SearchCriteria();
     Criteria.ProcessID = ProcessID;
     Criteria.DataType = DataType;
     Criteria.StartAddress = Address;
     Criteria.Length = Criteria.Size = Form.GetSearchMemorySize(DataType);
     Criteria.SearchType = SearchTypeBase.Unknown;
     Criteria.SearchValue = new byte[] { 0 };
     Form.NTRConnection.SearchCriteria.Add(Criteria);
     Form.NTRConnection.SendReadMemoryPacket(Criteria);
     return Criteria.AddressesFound.Values.First();
 }
Exemplo n.º 4
0
        private void ResetButton_Click(object sender, EventArgs e)
        {
            ComboSearchType.Items.Clear();
            ComboSearchType.Items.AddRange(SearchTypeInitialTool.GetValues());
            ComboSearchType.SelectedIndex = 0;
            LastSearchCriteria = null;
            ResultsGrid.Rows.Clear();
            ControlEnabledSearchType = ControlEnabledMemoryRange = ControlEnabledDataType = true;
            if (MemoryRange.SelectedIndex == MemoryRange.Items.Count - 1)
            {
                ControlEnabledStart = ControlEnabledSize = true;
            }

            LabelLastSearch.Text = "Last Search\n";
        }
Exemplo n.º 5
0
        internal static void Execute()
        {
            NTRRemoteConnection Conn = new NTRRemoteConnection();
            Console.WriteLine("Connecting...");
            Conn.IP = "192.168.1.29";
            Conn.Port = 8000;
            while (!Conn.Connect()) ;
            Thread t = new Thread(delegate()
                {
                    while (true)
                    {
                        Conn.SendHeartbeatPacket();
                        Thread.Sleep(100);
                    }
                });

            t.Start();
            Thread.Sleep(1000);
            Console.WriteLine("Getting Processes...");
            Conn.SendListProcessesPacket();
            while (!Conn.IsProcessListUpdated)
            {
                Thread.Sleep(10);
            }
            Dictionary<string, Dictionary<uint, uint>> Procs = new Dictionary<string, Dictionary<uint, uint>>();
            foreach (string ProcFull in Conn.Processes)
            {
                string Proc = ProcFull.Split('|')[0];
                Console.WriteLine("Fetching memregions for process " + Proc);
                Conn.SendReadMemoryAddressesPacket(Proc);
                while (!Conn.IsMemoryListUpdated)
                {
                    Thread.Sleep(10);
                }
                Procs.Add(Proc, Conn.AddressSpaces);
                Conn.IsMemoryListUpdated = false;
            }

            Directory.CreateDirectory("Temp");

            for (int i = 0; i < 3; ++i)
            {
                Directory.CreateDirectory("Temp" + Path.DirectorySeparatorChar + i);
                Console.WriteLine("Dumping memory set " + i + "...");

                foreach (string Proc in Procs.Keys)
                {
                    foreach (uint Start in Procs[Proc].Keys)
                    {
                        uint Size = Procs[Proc][Start];
                        SearchCriteria Criteria = new SearchCriteria();
                        Criteria.ProcessID = BitConverter.ToUInt32(Utilities.GetByteArrayFromByteString(Proc), 0);
                        Criteria.DataType = DataTypeExact.Bytes1;
                        Criteria.StartAddress = Start;
                        Criteria.Length = Size;
                        Criteria.SearchType = SearchTypeBase.Unknown;
                        Criteria.SearchValue = new byte[] { 0 };
                        Criteria.Size = 1;
                        Conn.SearchCriteria.Add(Criteria);
                        byte[] Data = new byte[Size];
                        Console.WriteLine("Dumping PID " + Proc + ", MR " + Start + "+" + Size + "...");
                        Conn.SendReadMemoryPacket(Criteria);
                        while (!Criteria.SearchComplete)
                        {
                            Thread.Sleep(10);
                        }
                        foreach (uint Addr in Criteria.AddressesFound.Keys)
                        {
                            Data[Addr - Start] = Criteria.AddressesFound[Addr][0];
                        }
                        File.WriteAllBytes("Temp" + Path.DirectorySeparatorChar + i + Path.DirectorySeparatorChar + Proc + "_" + Start + ".raw", Data);
                    }
                }

                if (i == 1)
                {
                    Console.WriteLine("Press any key...");
                    Console.ReadKey(false);
                    Console.WriteLine();
                }
            }

            t.Abort();
            Conn.Disconnect();
        }
 public void SendReadMemoryPacket(SearchCriteria NewSearchCriteria)
 {
     if (!NewSearchCriteria.HideSearch)
     {
         this.LockControls = true;
     }
     while (SearchCriteria[0] != NewSearchCriteria)
     {
         Thread.Sleep(10);
     }
     SearchTimerStopwatch.Start();
     SendReadMemoryPacketPre();
     SearchTimerStopwatch.Stop();
     NewSearchCriteria.Duration = (uint)SearchTimerStopwatch.ElapsedMilliseconds;
     SearchTimerStopwatch.Reset();
     if (!NewSearchCriteria.HideSearch)
     {
         this.LockControls = false;
     }
 }