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

CybioZ

Пользователи
  • Постов

    26
  • Зарегистрирован

  • Посещение

Весь контент CybioZ

  1. Здравствуйте , я сделал сканер сигнатур по видео все разобрал, но вот у меня не находит адрес. Сигнатура верна, проверял ее много раз через CE. using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Diagnostics;using System.Runtime.InteropServices;namespace Trainerheroes{ class Hack { //ReadProcessMemory [DllImport("kernel32.dll", SetLastError = true)] static extern bool ReadProcessMemory( IntPtr hProcess, IntPtr lpBaseAddress, [Out] byte[] lpBuffer, int dwSize, out int lpNumberOfBytesRead ); //OpenProcess // Flag = All = 0x001F0FFF [DllImport("kernel32.dll")] public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId); // CloseHandle [DllImport("kernel32.dll", SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool CloseHandle(IntPtr hObject); [StructLayout(LayoutKind.Sequential)] public struct MEMORY_BASIC_INFORMATION { public IntPtr BaseAddress; public IntPtr AllocationBase; public uint AllocationProtect; public IntPtr RegionSize; public uint State; public uint Protect; public uint Type; } // VirtualQueryEx [DllImport("kernel32.dll")] static extern int VirtualQueryEx(IntPtr hProcess, IntPtr lpAddress, out MEMORY_BASIC_INFORMATION lpBuffer, uint dwLength); //WriteProcessMemory [DllImport("kernel32.dll", SetLastError = true)] static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, out UIntPtr lpNumberOfBytesWritten); [DllImport("kernel32.dll", SetLastError = true)] static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, uint nSize, UIntPtr lpNumberOfBytesWritten); private int GetProcessID() { foreach (Process proc in Process.GetProcessesByName("Heroes3")) return proc.Id; return -1; } public void WriteBytes() { var handle = OpenProcess(0x001F0FFF, false, GetProcessID()); byte[] buffer = { 0xE0, 0x2E }; // значение на которое заменяю var dummy =new UIntPtr(); var address = FindSignature(); // вот тут адрес и не находит Console.WriteLine(address); if (address != -1) WriteProcessMemory(handle, (IntPtr)address, buffer, (uint)buffer.Length, out dummy); Console.WriteLine("Чит Активирован!"); CloseHandle(handle); Console.ReadKey(); } private int FindSignature() { int[] signature = { 224, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, 108, 97, 121, 101, 114, -1, 114, -1, -1, -1 }; long MaxAddress = 0x100000; long address = 0; MEMORY_BASIC_INFORMATION m; var handle = OpenProcess(0x001F0FFF, false, GetProcessID()); m.BaseAddress = IntPtr.Zero; m.RegionSize = IntPtr.Zero; byte[] buffer; while(address<=MaxAddress) { VirtualQueryEx(System.Diagnostics.Process.GetCurrentProcess().Handle, (IntPtr)address, out m, (uint)Marshal.SizeOf(typeof(MEMORY_BASIC_INFORMATION))); buffer = new byte[(uint)m.RegionSize]; int dummy = 0; ReadProcessMemory(handle, m.BaseAddress,buffer,(int)m.RegionSize,out dummy); if(address == (long)m.BaseAddress + (long)m.RegionSize) break; int count = 0; address = (long)m.BaseAddress+(long)m.RegionSize; if (buffer.Length > signature.Length) { for ( int i =0 ; i<buffer.Length;i++) { if ( buffer[i]==signature[0]) { for(int b = 0; b < signature.Length; b++) { if (buffer[i + b]==signature[b] || signature[b]==-1) { count++; if (count == signature.Length) { CloseHandle(handle); return i + (int)m.BaseAddress; } } else { count = 0; Console.WriteLine("err"); } } } } } } CloseHandle(handle); return -1; } }}
×
×
  • Создать...

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

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