this code alway return -1, i scan game memory modules base adresses and all modules
Code:
int Counter = 0;
int CapBytes = 0;
int ProcessModuleSize;
int ProcessBaseAddress;
byte[] SearchValueByPattern;
byte[] SearchValueByLinear;
byte[] MemoryBuffer;
Process ProcessData = Process.GetProcessesByName("myprocess")[0]; // Поиск процесса
ProcessBaseAddress = (int)ProcessData.MainModule.BaseAddress; // Базовый адресс процесса
ProcessModuleSize = ProcessData.MainModule.ModuleMemorySize; // Размер модуля процесса
var x = ProcessData.Modules[0].ModuleMemorySize;
MemoryBuffer = new byte[ProcessModuleSize]; // Инициализириую массив байтов размером модуля процесса
SearchValueByPattern = new byte[] { 0x41, 0x0A, 0x03, 0xF0, 0x00, 0x00, 0x00, 0x00 }; // Сигнатура для поиска адресса
SearchValueByLinear = System.Text.Encoding.UTF8.GetBytes("967110984321231"); // Значение для поиска адресса
/* foreach (ProcessModule item in ProcessData.Modules)
{
dataGridView1****ws.Insert(0, item.ModuleName, Convert.ToString((int)item.BaseAddress, 16));
}*/
//richTextBox1.Text += "Module Size: " + ProcessModuleSize + "\n";
//dataGridView1****ws.Insert(0, 1,2,3);
for (int g = 0; g < ProcessData.Modules.Count; g++)
{
ProcessBaseAddress = (int)ProcessData.Modules[g].BaseAddress;
MemoryBuffer = new byte[ProcessData.Modules[g].ModuleMemorySize];
ReadProcessMemory((int)ProcessData.Handle, ProcessBaseAddress, MemoryBuffer, MemoryBuffer.Length, ref CapBytes);
if (MemoryBuffer.Length >= SearchValueByPattern.Length)
{
for (int i = 0; i < MemoryBuffer.Length - SearchValueByPattern.Length; i++)
{
if (MemoryBuffer[i] == SearchValueByPattern[0])
{
for (int j = 0; j < SearchValueByPattern.Length; j++)
{
if (MemoryBuffer[i + j] == SearchValueByPattern[j])
{
Counter++;
if (Counter == SearchValueByPattern.Length)
{
MessageBox.Show("0x" + Convert.ToString(ProcessBaseAddress + i, 16).ToUpper());
//return ProcessBaseAddress + i;
}
}
else
{
Counter = 0;
}
}
}
}
}
}
return -1;
}
why is it not working?
sorry for my bad english guys..