Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ReadProcessMemory

18K
06 июня 2006 года
Rang
3 / / 05.06.2006
Проблема вот в чем, я в С++ пока ни бум-бум.
А нужно разрешить такую задачку.
Есть смещение (к примеру) 0x40103B.
И я знаю, что по этому смещению должны быть 3 байта (к примеру) 0x64,0x40,0x20.
Помогите написатиь код для чтения и проверки этих 3 байт.
Я тут пытася сделать что-то вроде:
Код:
BYTE OldCode[8];
    BYTE NewCode[8];
   
    BYTE* addr =(BYTE*)0x40103B;
    BYTE dbaddr[3] = {0x64,0x40,0x20};
   
    if(ReadProcessMemory(hMainInst,(LPCVOID)addr,OldCode,sizeof(dbaddr),NULL))
    {
        if(OldCode==dbaddr)
        {
           
        }
        else
        {
            MessageBox(0,(LPCSTR)OldCode,"Error Notice!",MB_OK | MB_ICONSTOP);
        }
    }
    else
    {
        MessageBox(0,"Can't read process memory!","Error Notice!",MB_OK | MB_ICONSTOP);
    }


Вообщем, сильно "ногами не бейте". =)
9.5K
06 июня 2006 года
Damarus
101 / / 08.04.2006
Здесь
 
Код:
if(OldCode==dbaddr)

ты сравниваеш не значения, адреса массивов.
18K
06 июня 2006 года
Rang
3 / / 05.06.2006
Эм, а если примерчик? :)
 
Код:
ReadProcessMemory(hMainInst,(LPCVOID)addr,OldCode,sizeof(dbaddr),NULL)

Я правильно написал?

 
Код:
if(&OldCode==&dbaddr)

Вот так надо?
9.5K
06 июня 2006 года
Damarus
101 / / 08.04.2006
Пример для данного случая:
 
Код:
DWORD dwData = 0;

ReadProcessMemory(hMainInst, reinterpret_cast<LPCVOID>(0x0040103B),
    &dwData, 3, NULL);
if (dwData == 0x00204064)
    MessageBox(NULL, "OK!", "", MB_OK);
else
    MessageBox(NULL, "Error!", "", MB_OK);
18K
06 июня 2006 года
Rang
3 / / 05.06.2006
Спасибо, вроде немного разобрался.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог