Перейти к содержанию
Авторизация  
Devil9313

VIrtualProtectEx

Рекомендуемые сообщения

Здравствуйте у  меня такой вопрос кто объяснить как работать с VIrtualProtectEx 

 

функция чтения 

 

function Read(Pattern: Cardinal): Cardinal;var pHandle: LongInt; P: Cardinal; NumRead: DWORD_PTR;begin pHandle := OpenProcess(PROCESS_VM_READ or PROCESS_VM_WRITE or PROCESS_VM_OPERATION,False,GameID); if ReadProcessMemory(pHandle, Ptr(Pattern),@P,SizeOf(P),NumRead) then Result := P; CloseHandle(pHandle);end;
 
Процедуры записи значения
 
procedure WriteValue(Address: integer; Value: Cardinal);var pHandle: LongInt; NumWritten: DWORD_PTR;begin pHandle := OpenProcess(PROCESS_VM_READ or PROCESS_VM_WRITE or PROCESS_VM_OPERATION,False,GameID); WriteProcessMemory(pHandle,Ptr(Address),@Value,SizeOf(Value),NumWritten); CloseHandle(pHandle);end;procedure WriteBytes(Adress: Integer; Value: array of Byte);var pHandle: LongInt; NumWritten: DWORD_PTR;begin pHandle := OpenProcess(PROCESS_VM_READ or PROCESS_VM_WRITE or PROCESS_VM_OPERATION,False,GameID); WriteProcessMemory(pHandle,Ptr(Adress),@Value,SizeOf(Value),NumWritten); CloseHandle(pHandle);end;
 
Если возможно то с примером буду очень благодарен 
Изменено пользователем Devil9313

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Функция VirtualProtect позволяет изменить атрибуты защиты указанного региона виртуального адресного програнства указанного процесса.

{ Вариант 1 }function VirtualProtectEx(  hProcess: THandle;          //дескриптор процесса  lpAddress: Pointer;         // начальный адрес фрагмента памяти  dwSize: DWORD;              // размер фрагмента памяти  flNewProtect: DWORD;        // новые атрибуты защиты  lpflOldProtect: Pointer     // старые атрибуты защиты): BOOL; stdcall; overload;{ Вариант 2 }function VirtualProtectEx(  hProcess: THandle;          //дескриптор процесса  lpAddress: Pointer;         // начальный адрес фрагмента памяти  dwSize: DWORD;              // размер фрагмента памяти  flNewProtect: DWORD;        // новые атрибуты защиты  var OldProtect: DWORD       // старые атрибуты защиты): BOOL; stdcall; overload;

Описание

Вы можете установить атрибуты доступа только для страниц, под которыми присутствует физическая память. Если хотя-бы под одной из страниц указанного диапазона нет физической памяти, то функция вернет ошибку и никакого изменения атрибутов защиты не произойдет.

Функция VirtualProtectEx в целом идентичнафункции VirtualProtect, за исключением того, что позволяет изменять атрибуты защиты страниц памяти любого указанного процесса.

Windows NT/2000: Указание атрибута PAGE_GUARD доступа к странице позволяет создавать в памяти защищаемые страницы. Создание таких страниц позволяет нам отловить попытки доступа к странице. Для большей информации смотрите раздел "Создание защищаемых страниц".

Windows 95/98: Вы не можете использвоать функцию VirtualProtect к любому региону адресного пространства, расположенного внутри разделяемого адресного пространства (от $80000000 до $BFFFFFFF).

Требования

Windows NT/2000: Требуется Windows NT 3.1 или более поздняя версия
Windows 95/98: Требуется Windows 95 или более поздняя версия
Бибиотека: Kernel32.dll
Подключаемый модуль: Windows

 

Источник : http://www.hot.ee/memman/virtual/VirtualProtectEx.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa366899.aspx

1й параметр - хэндл открытого процесса

2й - (указатель) адрес памяти, для которой необходимо изменить модификатор доступа

3й - размер блока памяти, для которого необходимо изменить модификатор доступа

4й - новый модификатор доступа

5й - (указатель) переменная размером 4 байта, в которую запишется старый модификатор доступа

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пример записи с изминением атрибута защиты блока памяти :

procedure Write(ProcessID: Cardinal; WriteAdress: Integer; WriteValue: array of Byte);varpHandle:LongInt;Bytes : Cardinal;Aob_old_Protect_OFF: dword;Aob_old_Protect_ON:dword;beginpHandle:=OpenProcess(PROCESS_VM_READ or PROCESS_VM_WRITE or PROCESS_VM_OPERATION,false,ProcessID);VirtualProtectEx(pHandle,ptr(WriteAdress),SizeOf(WriteValue),PAGE_EXECUTE_READWRITE,Aob_old_Protect_OFF);//Устанавливает атрибут Чтение\Запись (PAGE_EXECUTE_READWRITE)Application.ProcessMessages;WriteProcessMemory(pHandle,ptr(WriteAdress),(@WriteValue),SizeOf(WriteValue),Bytes);VirtualProtectEx(pHandle,ptr(WriteAdress),SizeOf(WriteValue),Aob_old_Protect_OFF,Aob_old_Protect_ON);//ВвостанавливаемCloseHandle(pHandle);End;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо ребят за помощь!!!

Изменено пользователем Devil9313

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В данном топике никто не постил уже 4 месяца. Пости здесь только если твой вопрос точно совпадает с темой данного топика.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Предпросмотр
Авторизация  

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.