C# Aray Of Byte Aob Scan Nasıl Yapa Bilirim

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üye
Katılım
14 May 2022
Mesajlar
13
Tepki puanı
0
Ödüller
2
Yaş
28
4 HİZMET YILI
Ben Hile Geliştiriyorumda Size Şey Sorcaktım C# Dilinde Aray Of Byte Aob Scan Nasıl Yapabilirim
Aşşaığıdaki Vidyodaki Vb.Net Dilinde Olduğu İçin Yapamadım C# Dilinede Çeviremedim
 
Moderatörün son düzenlenenleri:
assembly so hard please help me
Donator
Katılım
7 Nis 2017
Mesajlar
1,467
Çözümler
346
Tepki puanı
248
Ödüller
14
9 HİZMET YILI
Bağlantıları görmek için lütfen Giriş Yap

Denedikten sonra bir sorunla karşılaşırsan buraya yaz yardımcı olmaya çalışırım. Formatlamasını düzeltmek için snippet olarak yükledim tekrar bak.
 
Son düzenleme:
Seçkin Üye
Katılım
7 May 2020
Mesajlar
397
Çözümler
10
Tepki puanı
48
Ödüller
5
Yaş
26
6 HİZMET YILI
C#:
using System;
using System.Diagnostics;
using System.Linq;

namespace AOBScan
{
    class Program
    {
        static void Main(string[] args)
        {
            // Process adı
            string processName = "notepad";

            // AOB (Array of Bytes)
            byte[] signature = new byte[] { 0x48, 0x8B, 0x05, 0x00, 0x00, 0x00, 0x00, 0xC3 };

            // İşlemi seç
            Process process = Process.GetProcessesByName(processName).FirstOrDefault();

            // Eğer işlem bulunamadıysa hata ver
            if (process == null)
            {
                Console.WriteLine("İşlem bulunamadı.");
                return;
            }

            // Bellek alanı tarama
            IntPtr address = Scan(process, signature);

            // Eğer bellek alanında tarama yapılamadıysa hata ver
            if (address == IntPtr.Zero)
            {
                Console.WriteLine("AOB bulunamadı.");
                return;
            }

            Console.WriteLine("AOB bulundu: 0x" + address.ToString("X"));
        }

        private static IntPtr Scan(Process process, byte[] signature)
        {
            // Bellek alanı okuma izni
            IntPtr baseAddress = process.MainModule.BaseAddress;
            int size = process.MainModule.ModuleMemorySize;

            // Bellek alanını byte dizisine ata
            byte[] buffer = new byte[size];
            IntPtr readBytes = IntPtr.Zero;
            WinApi.ReadProcessMemory(process.Handle, baseAddress, buffer, size, out readBytes);

            // Bellek alanındaki byte dizisini tarama
            for (int i = 0; i < size - signature.Length; i++)
            {
                bool found = true;
                for (int j = 0; j < signature.Length; j++)
                {
                    if (buffer[i + j] != signature[j])
                    {
                        found = false;
                        break;
                    }
                }

                if (found)
                {
                    return baseAddress + i;
                }
            }

            return IntPtr.Zero;
        }
    }

    internal static class WinApi
    {
        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        public static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [System.Runtime.InteropServices.In, System.Runtime.InteropServices.Out] byte[] buffer, int size, out IntPtr lpNumberOfBytesRead);
    }
}
 
Üye
Katılım
28 Eki 2020
Mesajlar
8
Tepki puanı
0
Ödüller
3
Yaş
28
5 HİZMET YILI
İşlemi gerçekleştirmek için öncelikle bir bellek bloğu ile çalışmanız gerekir. Bunun için System.Diagnostics.Process sınıfını kullanabilirsiniz. Ardından, bellek bloğunu okumak ve arama yapmak için System.Runtime.InteropServices.Marshal sınıfını kullanabilirsiniz.
alttaki kodu incelemeni tavsiye ederim. iyi çalışmalar..

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

public static class AobScanner
{
public static IntPtr FindAOB(Process process, byte[] pattern)
{
// Bellek arama işlemini gerçekleştireceğimiz modülün base adresini alın
IntPtr moduleBase = process.MainModule.BaseAddress;

// Modülün boyutunu alın
int moduleSize = process.MainModule.ModuleMemorySize;

// Bellek bloğunu okuyun
byte[] buffer = new byte[moduleSize];
IntPtr bytesRead;
if (!ReadProcessMemory(process.Handle, moduleBase, buffer, moduleSize, out bytesRead))
{
throw new Exception("Bellek okuma hatası: " + Marshal.GetLastWin32Error());
}

// AOB taraması yapın
int patternLength = pattern.Length;
for (int i = 0; i < moduleSize - patternLength; i++)
{
bool found = true;
for (int j = 0; j < patternLength; j++)
{
if (buffer[i + j] != pattern[j])
{
found = false;
break;
}
}
if (found)
{
// Eşleşme bulundu, adresi döndürün
return moduleBase + i;
}
}

// Eşleşme bulunamadı
return IntPtr.Zero;
}

[DllImport("kernel32.dll")]
private static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, int nSize, out IntPtr lpNumberOfBytesRead);
}
 
CoreCheat CSGO
Griffin Premium
Katılım
10 May 2016
Mesajlar
1,766
Çözümler
5
Tepki puanı
720
Ödüller
14
Yaş
25
Sosyal
10 HİZMET YILI
Gerçekten mantığını öğrenmek istiyorsan,
Bağlantıları görmek için lütfen Giriş Yap
a bakmanı tavsiye ederim. Gerisi compare düz direkt.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst