Перейти к содержанию

Рекомендуемые сообщения

Вот настрочил такой сканер сигнатур, но проблема в том что не хочет заполняться буфер.

(прощу не ругаться знаю что это бредокод, но все же)

Прощу исправить, буду благодарен!


var pattern = new int[] { 0xF3, 0x0F, 0x7E, 0x56, 0x10, 0xF2, 0x0F, 0x59, 0xC2, 0x66, 0x0F, 0xD6, 0x45, 0xD0, 0x66, 0x0F, 0x57, 0xD2, 0x66, 0x0F, 0x2E, 0xD0 };
var handle = OpenProcess(0x001F0FFF, false, pID);
long MaxAddress = 0x7fffffff;
long address = 0;
int bytesread;
MEMORY_BASIC_INFORMATION mbi;
byte[] buffer;
mbi.BaseAddress = IntPtr.Zero;
mbi.RegionSize = IntPtr.Zero;
while (address <= MaxAddress)
{
int result = VirtualQueryEx(handle, (IntPtr)address, out mbi, (uint)Marshal.SizeOf(typeof(MEMORY_BASIC_INFORMATION)));
if (address == (long)mbi.BaseAddress + (long)mbi.RegionSize)
break;
address = (long)mbi.BaseAddress + (long)mbi.RegionSize;
}

buffer = new byte[(uint)mbi.RegionSize];
ReadProcessMemory(handle, mbi.BaseAddress, buffer, (int)mbi.RegionSize, out bytesread);

var counter = 0;
if (pattern.Length < (int)mbi.RegionSize)
{
for (var i = 0; i < (int)mbi.RegionSize; i++)
{
if (buffer[i] == pattern[0])
{
for (var j = 0; j < pattern.Length; j++)
{
if (buffer[i + j] == pattern[j])
{
counter++;
if (counter == pattern.Length)
{
int resultq = i + (int)mbi.BaseAddress;
return;
}
else
{
counter = 0;
}
}
}
}
}
}
}

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.