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) {
Console.WriteLine(tmpAddress.ToString()+" > "+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());
}
}
}
Comments