Scan memory c# wpf

Начинающий
Статус
Оффлайн
Регистрация
11 Апр 2022
Сообщения
4
Реакции [?]
1
Поинты[?]
0
Пишу чекер на c# wpf, до идеала осталось вшить чтение памяти по определенным словам и выводом в лист. Искал на форумах, но нужного ответа не получил, кто может помочь?
Чтобы было проще понять, что я имею ввиду - у ютубера blade(samp) был и есть свой чекер, где он сканировал память игры и выдавал при обнаружении строчки ее, к примеру aimbot. Вывод в лист, смогу реализовать, но не могу чтение памяти адекватно сделать
1684350893788.png
 
coder of the year
Участник
Статус
Оффлайн
Регистрация
13 Мар 2019
Сообщения
857
Реакции [?]
257
Поинты[?]
2K
ну как я понял тебе нужен поиск определенного стринга в памяти процесса , для этого можно не мудрить и воспользоваться дефолт 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;
}
 
Сверху Снизу