proger Опубликовано 7 апреля, 2013 Поделиться Опубликовано 7 апреля, 2013 Вот настрочил такой сканер сигнатур, но проблема в том что не хочет заполняться буфер. (прощу не ругаться знаю что это бредокод, но все же)Прощу исправить, буду благодарен!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; } } } } } } } Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения