• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

Scan memory c# wpf

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
11 Апр 2022
Сообщения
56
Реакции
7
Пишу чекер на c# wpf, до идеала осталось вшить чтение памяти по определенным словам и выводом в лист. Искал на форумах, но нужного ответа не получил, кто может помочь?
Чтобы было проще понять, что я имею ввиду - у ютубера blade(samp) был и есть свой чекер, где он сканировал память игры и выдавал при обнаружении строчки ее, к примеру aimbot. Вывод в лист, смогу реализовать, но не могу чтение памяти адекватно сделать
1684350893788.png
 
ну как я понял тебе нужен поиск определенного стринга в памяти процесса , для этого можно не мудрить и воспользоваться дефолт readprocessmemory(импортнутый) и процесс классом в шарпе. преобразовывать строку в байты и искать уже эти байты в процессе


C#:
Expand Collapse Copy
[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;
}
 
ну как я понял тебе нужен поиск определенного стринга в памяти процесса , для этого можно не мудрить и воспользоваться дефолт readprocessmemory(импортнутый) и процесс классом в шарпе. преобразовывать строку в байты и искать уже эти байты в процессе


C#:
Expand Collapse Copy
[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 делаю это куда лучше
 
Я прочел этот код но в данном виде он мало чем поможет так как тот-же Process Hacker, System Infromer делаю это куда лучше
ты ему советуешь использовать процесс хакер? ты прочел вообще тему или только код? человек хочет в своем приложении на c# сканить память
 
Назад
Сверху Снизу