CHEATERCE Опубликовано 27 ноября, 2012 Поделиться Опубликовано 27 ноября, 2012 Здравствуйте! Помогите пожалуйста перевести вот этот код на язык C#const int size = sizeof(pattern) / sizeof(pattern[0]);for(int j=0; j<size; j++){ if ((pBuffer[i+j] ^ pattern[j])) { break; } else { if(n==size-1) { address = (LPVOID)((DWORD)mbi.BaseAddress+(DWORD)i); WriteProcessMemory(GameHandle,(LPVOID)(address), pattern,6,0); } }} Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 27 ноября, 2012 Поделиться Опубликовано 27 ноября, 2012 Тебе незачем переводить этот код на "решетки". В решетках есть, если я правильно помню, регулярные выражения. С их помощью реализация аобскана делается проще. Ссылка на комментарий Поделиться на другие сайты Поделиться
CHEATERCE Опубликовано 27 ноября, 2012 Автор Поделиться Опубликовано 27 ноября, 2012 Я хочу что-бы трейнер считывал найденый регион памяти и потом в нем искал сигнатуру."считывал найденый регион памяти" с этим я разобрался, а вот как устроить перебор байт заданной сигнатуры что-то не разберу.Вот такой код:static void memsrc () { Process hackProc = Process.GetProcessesByName("WindowsFormsApplication1.vshost")[0]; MEMORY_BASIC_INFORMATION mbi = new MEMORY_BASIC_INFORMATION(); SYSTEM_INFO si = new SYSTEM_INFO(); GetSystemInfo(ref si); byte[] pattern = new byte[] { 0x2A, 0x00, 0x00, 0x0F, 0xB6, 0x87, 0x81, 0x02, 0x00, 0x00, 0x00, 0x00 }; uint startMem = 0x0; IntPtr nRead = IntPtr.Zero; VirtualQueryEx(hackProc.Handle, (IntPtr)startMem, ref mbi, Marshal.SizeOf(typeof(MEMORY_BASIC_INFORMATION))); byte[] buffer = new byte[(int)mbi.RegionSize]; ReadProcessMemory(hackProc.Handle, mbi.BaseAddress, buffer, (uint)mbi.RegionSize, ref nRead); } Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 27 ноября, 2012 Поделиться Опубликовано 27 ноября, 2012 Поищи у меня в видеоуроках (ссылка у меня в подписи) - я писал сканер сигнатур на решётках. Там достаточно медленный и сырой алгоритм, но простой и вполне рабочий. Ссылка на комментарий Поделиться на другие сайты Поделиться
CHEATERCE Опубликовано 28 ноября, 2012 Автор Поделиться Опубликовано 28 ноября, 2012 Получился вот такой код, но он что-то не работает.public void memsrc() { Process hackProc = Process.GetProcessesByName("WindowsFormsApplication1.vshost")[0]; MEMORY_BASIC_INFORMATION mbi = new MEMORY_BASIC_INFORMATION(); SYSTEM_INFO si = new SYSTEM_INFO(); GetSystemInfo(ref si); byte[] pattern = new byte[] { 0x2A, 0x00, 0x00, 0x0F, 0xB6, 0x87, 0x81, 0x02, 0x00, 0x00, 0x3D }; var startMem = 0; var counter = 0; startMem = (int)mbi.BaseAddress; IntPtr nRead = IntPtr.Zero; VirtualQueryEx(hackProc.Handle, (IntPtr)startMem, ref mbi, Marshal.SizeOf(typeof(MEMORY_BASIC_INFORMATION))); byte[] buffer = new byte[(uint)mbi.RegionSize]; ReadProcessMemory(hackProc.Handle, (IntPtr)startMem, buffer, (uint)mbi.RegionSize, ref nRead); if (pattern.Length <= buffer.Length) { for (var i = 0; i < buffer.Length; 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 result = i + startMem; toolStripTextBox2.Text = result.ToString(); return; } } } } } } } Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 28 ноября, 2012 Поделиться Опубликовано 28 ноября, 2012 Получился вот такой код, но он что-то не работает.public void memsrc() { Process hackProc = Process.GetProcessesByName("WindowsFormsApplication1.vshost")[0]; MEMORY_BASIC_INFORMATION mbi = new MEMORY_BASIC_INFORMATION(); SYSTEM_INFO si = new SYSTEM_INFO(); GetSystemInfo(ref si); byte[] pattern = new byte[] { 0x2A, 0x00, 0x00, 0x0F, 0xB6, 0x87, 0x81, 0x02, 0x00, 0x00, 0x3D }; var startMem = 0; var counter = 0; startMem = (int)mbi.BaseAddress; IntPtr nRead = IntPtr.Zero; VirtualQueryEx(hackProc.Handle, (IntPtr)startMem, ref mbi, Marshal.SizeOf(typeof(MEMORY_BASIC_INFORMATION))); byte[] buffer = new byte[(uint)mbi.RegionSize]; ReadProcessMemory(hackProc.Handle, (IntPtr)startMem, buffer, (uint)mbi.RegionSize, ref nRead); if (pattern.Length <= buffer.Length) { for (var i = 0; i < buffer.Length; 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 result = i + startMem; toolStripTextBox2.Text = result.ToString(); return; } } } } } } }Если говорить честно, то код ужасный. Ссылка на комментарий Поделиться на другие сайты Поделиться
CHEATERCE Опубликовано 28 ноября, 2012 Автор Поделиться Опубликовано 28 ноября, 2012 Если говорить честно, то код ужасный.Ага и не работает, поправьте что нек так пожалуйста) Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 28 ноября, 2012 Поделиться Опубликовано 28 ноября, 2012 Ага и не работает, поправьте что нек так пожалуйста)Тебе писали что C# с C++ никогда не сравнится. А ты играешь ещё и по правилам C++ на C#, без знаний архитектуры обоих языков.Для начала тебе бы не помешало представлять как работает сканер сигнатур, и если ты уж любитель фреймворка такой, то используй regex. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения