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');
}
}