Uzman Üye
Merhaba arkadaşlar bugün sizlere aob scanner kodlarını vericem oyun her güncellendiğinde tekrar hilesini bulmak istemiyorsanız bunu deneyebilirsiniz.
PHP:
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace aobScanner
{
class Program
{
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool ReadProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
byte[] lpBuffer,
int dwSize,
int lpNumberOfBytesRead);
[DllImport("kernel32.dll", SetLastError = true)]
public static extern IntPtr OpenProcess(
ProcessAccessFlags processAccess,
bool bInheritHandle,
int processId
);
public static IntPtr OpenProcess(Process proc, ProcessAccessFlags flags)
{
return OpenProcess(flags, false, proc.Id);
}
[Flags]
public enum ProcessAccessFlags : uint
{
All = 0x001F0FFF,
Terminate = 0x00000001,
CreateThread = 0x00000002,
VirtualMemoryOperation = 0x00000008,
VirtualMemoryRead = 0x00000010,
VirtualMemoryWrite = 0x00000020,
DuplicateHandle = 0x00000040,
CreateProcess = 0x000000080,
SetQuota = 0x00000100,
SetInformation = 0x00000200,
QueryInformation = 0x00000400,
QueryLimitedInformation = 0x00001000,
Synchronize = 0x00100000
}
public static bool byteqeualshit(byte[] a1, byte[] b1)
{
// If not same length, done
if (a1.Length != b1.Length)
{
return false;
}
// If they are the same object, done
if (object.ReferenceEquals(a1, b1))
{
return true;
}
// Loop all values and compare
for (int i = 0; i < a1.Length; i++)
{
if (a1[i] != b1[i])
{
return false;
}
}
// If we got here, equal
return true;
}
public static byte[] ToByteArray(String HexString)
{
int NumberChars = HexString.Length;
byte[] bytes = new byte[NumberChars / 2];
for (int i = 0; i < NumberChars; i += 2)
{
bytes[i / 2] = Convert.ToByte(HexString.Substring(i, 2), 16);
}
return bytes;
}
static byte[] GetOp(string hex)
{
return ToByteArray(hex.Replace(" ", ""));
}
[STAThread]
static void Main(string[] args)
{
Process p = Process.GetProcessesByName("oyunadı")[0];
Console.Title = "Oyunismi Opcode Updater";
Console.WriteLine("Opcode updater");
Console.WriteLine("Oyun Bulundu");
Console.WriteLine("Last Sig updates: Versiyon");
proc = OpenProcess(p, ProcessAccessFlags.VirtualMemoryRead);
Console.WriteLine("Oyun Handle: 0x" + proc.ToString("x"));
Console.WriteLine("Oyun Base Address: 0x" + p.MainModule.BaseAddress.ToInt64().ToString("x"));
Console.WriteLine("Scan / Dump Size: 0x" + p.MainModule.ModuleMemorySize.ToString("x"));
Console.WriteLine("Trying to update opcodes, can take up to 5min to update all.");
DataTable hacktable = new DataTable();
hacktable.Columns.Add("bytes", typeof(byte[]));
hacktable.Columns.Add("Hack", typeof(string));
hacktable.Rows.Add(GetOp("75 08 85 C9 "), "Hile Adı");
hacktable.Rows.Add(GetOp("88 87 69010000"), "Hileadı");
hacktable.Rows.Add(GetOp("sigi bu kısma yazıyorsunuz"), "Hileadı");
Console.WriteLine("Total Opcodes to update: " + hacktable.Rows.Count.ToString());
Stopwatch stopwatch = new Stopwatch();
ProcessModule targetModule = p.MainModule;
baseaddress = targetModule.BaseAddress.ToInt64();
int moduleSize = targetModule.ModuleMemorySize;
byte[] buffer;
stopwatch.Start();
string fulltxt = "";
string full2 = "";
int count = 0;
for (int x = 0; x < moduleSize; x++)
{
if(x > 0x2a0000)
{
stopwatch.Stop();
Console.WriteLine("Secs it took to update: {0}", stopwatch.Elapsed.Seconds);
Console.WriteLine("Region to scan end reached");
break;
}
foreach(DataRow row in hacktable.Rows)
{
byte[] scan = row.Field<byte[]>(0);
string hack = row.Field<string>(1);
buffer = new byte[scan.Length];
ReadProcessMemory(proc, (IntPtr)baseaddress + x, buffer, scan.Length, 0);
if (byteqeualshit(buffer, scan))
{
count++;
fulltxt += hack;
Console.Write("Found " + hack + " at: ");
Console.ForegroundColor = ConsoleColor.Green;
full2 += "\r\noyun.exe+" + x.ToString("x").ToUpper() + " - " + hack;
Console.WriteLine("oyun.exe+" + x.ToString("x").ToUpper());
Console.ResetColor();
}
}
}
foreach(DataRow row in hacktable.Rows)
{
string hack = row.Field<string>(1);
if (!fulltxt.Contains(hack))
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Unable to update " + hack + ", go update sig :)");
Console.ResetColor();
}
}
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Opcodes updated successfully: " + count);
Console.WriteLine("Do you want to copy everythng to clipboard? (Y for yes, any other key for no") ;
ConsoleKeyInfo ff = Console.ReadKey();
if(ff.KeyChar == 'y')
{
Clipboard.SetText(full2);
Console.WriteLine("\nClipboard text set");
}
Console.WriteLine("Press any key to exit!");
Console.ReadKey();
}
static long baseaddress = 0;
static IntPtr proc;
}
}