Scan memory c# wpf

Начинающий
Статус
Оффлайн
Регистрация
11 Апр 2022
Сообщения
27
Реакции[?]
3
Поинты[?]
5K
Пишу чекер на c# wpf, до идеала осталось вшить чтение памяти по определенным словам и выводом в лист. Искал на форумах, но нужного ответа не получил, кто может помочь?
Чтобы было проще понять, что я имею ввиду - у ютубера blade(samp) был и есть свой чекер, где он сканировал память игры и выдавал при обнаружении строчки ее, к примеру aimbot. Вывод в лист, смогу реализовать, но не могу чтение памяти адекватно сделать
1684350893788.png
 
coder of the year
Участник
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
886
Реакции[?]
266
Поинты[?]
4K
ну как я понял тебе нужен поиск определенного стринга в памяти процесса , для этого можно не мудрить и воспользоваться дефолт readprocessmemory(импортнутый) и процесс классом в шарпе. преобразовывать строку в байты и искать уже эти байты в процессе


C#:
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
    public static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, int nSize, ref int lpNumberOfBytesRead);

bool check_string(Process process, string searchString)
{
        IntPtr baseAddress = process.MainModule.BaseAddress;
        IntPtr endAddress = IntPtr.Add(baseAddress, process.MainModule.ModuleMemorySize);

        byte[] buffer = new byte[4096];
        int bytesRead = 0;

        for (IntPtr address = baseAddress; address.ToInt64() < endAddress.ToInt64(); address = IntPtr.Add(address, buffer.Length))
        {
            if (!ReadProcessMemory(process.Handle, address, buffer, buffer.Length, ref bytesRead))
                return false;
                                 // ASCII / UTF8 можно юзать
            string text = Encoding.ASCII.GetString(buffer);

            if (text.Contains(searchString))
                return true;
            else
                return false;
        }

        return false;
}
 
Monolith Development
Участник
Статус
Оффлайн
Регистрация
8 Мар 2018
Сообщения
542
Реакции[?]
195
Поинты[?]
31K
ну как я понял тебе нужен поиск определенного стринга в памяти процесса , для этого можно не мудрить и воспользоваться дефолт readprocessmemory(импортнутый) и процесс классом в шарпе. преобразовывать строку в байты и искать уже эти байты в процессе


C#:
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
    public static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, int nSize, ref int lpNumberOfBytesRead);

bool check_string(Process process, string searchString)
{
        IntPtr baseAddress = process.MainModule.BaseAddress;
        IntPtr endAddress = IntPtr.Add(baseAddress, process.MainModule.ModuleMemorySize);

        byte[] buffer = new byte[4096];
        int bytesRead = 0;

        for (IntPtr address = baseAddress; address.ToInt64() < endAddress.ToInt64(); address = IntPtr.Add(address, buffer.Length))
        {
            if (!ReadProcessMemory(process.Handle, address, buffer, buffer.Length, ref bytesRead))
                return false;
                                 // ASCII / UTF8 можно юзать
            string text = Encoding.ASCII.GetString(buffer);

            if (text.Contains(searchString))
                return true;
            else
                return false;
        }

        return false;
}
Я прочел этот код но в данном виде он мало чем поможет так как тот-же Process Hacker, System Infromer делаю это куда лучше
 
Начинающий
Статус
Оффлайн
Регистрация
11 Апр 2022
Сообщения
27
Реакции[?]
3
Поинты[?]
5K
щитпостер стат ратио 0.17
Участник
Статус
Оффлайн
Регистрация
28 Окт 2017
Сообщения
1,243
Реакции[?]
227
Поинты[?]
38K
Я прочел этот код но в данном виде он мало чем поможет так как тот-же Process Hacker, System Infromer делаю это куда лучше
ты ему советуешь использовать процесс хакер? ты прочел вообще тему или только код? человек хочет в своем приложении на c# сканить память
 
Сверху Снизу