using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Globalization; class mem { //value enum cari dari sini https://msdn.microsoft.com/en-us/library/windows/desktop/ms684880(v=vs.85).aspx //[Flags] public enum ProcessAccessType : uint { PROCESS_TERMINATE = (0x0001), PROCESS_CREATE_THREAD = (0x0002), PROCESS_SET_SESSIONID = (0x0004), PROCESS_VM_OPERATION = (0x0008), PROCESS_VM_READ = (0x0010), PROCESS_VM_WRITE = (0x0020), PROCESS_DUP_HANDLE = (0x0040), PROCESS_CREATE_PROCESS = (0x0080), PROCESS_SET_QUOTA = (0x0100), PROCESS_SET_INFORMATION = (0x0200), PROCESS_QUERY_INFORMATION = (0x0400) } //const string pointerrecuk = "033E6E78"; const uint pointerrecuk = 0x033E6E78; const uint pointerrecuk2 = 0x00A1C658; const uint offset_pointerrecuk2 = 0x5F8A; [DllImport("kernel32.dll")] public static extern IntPtr OpenProcess(UInt32 dwDesiredAccess, Int32 bInheritHandle, UInt32 dwProcessId); [DllImport("kernel32.dll")] public static extern Int32 CloseHandle(IntPtr hObject); [DllImport("kernel32.dll")] public static extern Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out int lpNumberOfBytesRead); [DllImport("kernel32.dll")] public static extern Int32 WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out int lpNumberOfBytesWritten); public static void Main() { try { bool x = false; Process[] proc; while(true) { proc = Process.GetProcessesByName("game"); if(proc.Length == 0 && !x) { Console.WriteLine("menunggu game.exe dibuka"); x = true; }else if(proc.Length > 0) { Console.WriteLine("Opened. pid : "+proc[0].Id); try { Console.WriteLine("BaseAddress : "+proc[0].MainModule.BaseAddress); }catch { } break; } } ProcessAccessType akses = ProcessAccessType.PROCESS_VM_READ | ProcessAccessType.PROCESS_VM_WRITE | ProcessAccessType.PROCESS_VM_OPERATION; IntPtr prosesHandle = mem.OpenProcess((uint)akses, 0, (uint)proc[0].Id); int bytesRead; byte[] buffer = new byte[256]; //--Untuk pointer 1--// int tmpAddress = 0; int maxhp = 157288192; new Thread(() => { while(true) { //mem.ReadProcessMemory(prosesHandle, (IntPtr)decPointer, buffer, 4, out bytesRead); mem.ReadProcessMemory(prosesHandle, (IntPtr)pointerrecuk, buffer, 4, out bytesRead); tmpAddress = BitConverter.ToInt32(buffer,0); //Console.WriteLine(prosesHandle.ToString()+" "+tmpAddress.ToString()); if(tmpAddress>0 && tmpAddress "+maxhp.ToString()); byte[] cuk = BitConverter.GetBytes(maxhp); mem.WriteProcessMemory(prosesHandle, (IntPtr)pointerrecuk, cuk, (UInt32)cuk.Length, out bytesRead); } Thread.Sleep(250); } }).Start(); /////////// //--Untuk offset 2--// /*byte[] nop ={ 0x90, 0x90, 0x90, 0x90, 0x90 }; mem.ReadProcessMemory(prosesHandle, (IntPtr)pointerrecuk2, buffer, 6, out bytesRead); uint totalcuk = (uint)BitConverter.ToInt32(buffer, 0)+offset_pointerrecuk2; Console.WriteLine(totalcuk.ToString()); mem.WriteProcessMemory(prosesHandle, (IntPtr)totalcuk, nop, (UInt32)nop.Length, out bytesRead);*/ //------------------// //mem.CloseHandle(prosesHandle); } catch(Exception e) { Console.WriteLine(e.ToString()); } } }