Перейти к содержанию

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

Здравствуйте у  меня такой вопрос кто объяснить как работать с 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;
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

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

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

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