using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AC_Hack
{
public partial class Form1 : Form
{
[DllImport("kernel32.dll")]
private static extern Int32 ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesWritten);
[DllImport("kernel32.dll")]
private static extern Int32 WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [In, Out] byte[] buffer, UInt32 size, out IntPtr lpNumberOfBytesWritten);
[DllImport("kernel32.dll")]
public static extern bool ReadProcessMemory(IntPtr hProcess, int lpBaseAddress, byte[] buffer, int size, int lpNumberOfBytesRead);
int baseAdress = 0x004DF73C;
int ammoAdress;
int[] offsets = {0x7f};
IntPtr pHandel;
public Form1()
{
InitializeComponent();
}
public void WriteInteger(string ProcessName, int Address, int Value)
{
try
{
Process[] ProcList = Process.GetProcessesByName(ProcessName);
if (ProcList.Length == 0)
return;
else
{
pHandel = ProcList[0].Handle;
byte[] Buffer = BitConverter.GetBytes(Value);
IntPtr Zero = IntPtr.Zero;
WriteProcessMemory(pHandel, (IntPtr)Address, Buffer, (UInt32)Buffer.Length, out Zero);
}
}
catch (Exception ex){}
}
public int GetPointer(string ProcessName, int BasePointer, int[] Offsets)
{
Process[] ProcList = Process.GetProcessesByName(ProcessName);
if (ProcList.Length == 0) return 0;
byte[] Buffer = new byte[4];
if (!ReadProcessMemory(ProcList[0].Handle, BasePointer, Buffer, 4, 0))
return 0;//Just incase it fails to read
int Base = BitConverter.ToInt32(Buffer, 0);
for (int i = 0; i < Offsets.Length; i++)
{
if (!ReadProcessMemory(ProcList[0].Handle, Base + Offsets[i], Buffer, 4, 0))
return 0;//Just incase it fails to read
Base = i != (Offsets.Length - 1) ? BitConverter.ToInt32(Buffer, 0) : Base += Offsets[i];
}
return Base;
}
private void button1_Click(object sender, EventArgs e)
{
ammoAdress = GetPointer("ac_client.exe", baseAdress, offsets);
WriteInteger("ac_client.exe", ammoAdress, 200);
label1.Text = Convert.ToString(ammoAdress);
}
}