Master4eG писал(а):
Так он вроде как не может записать в этот адрес ничегоТак не может записать или падает целевое приложение при попытке записать?
Вообще, для таких задач сначала получаются все необходимые права в системе и на участок памяти, с которым наш редактор будет работать.
Например, как я у себя реализовал в моём тулзе по работе с памятью процессов:
1) При запуске приложения, получаются привилегии отладчика: для Delphi
2) Перед чтением/записью значений по адресу, требуется изменить атрибуты защиты указанного региона виртуального адресного пространства:
(псевдокод:)
oldprotect: dword;
Value: Integer;
Address: Integer;
hprocess: thandle;
VirtualProtectEx(hprocess, pointer(address), 4, PAGE_EXECUTE_READWRITE, @oldprotect);
WriteProcessMemory(hprocess, pointer(Address), @Value, 4, Write);
VirtualProtectEx(hprocess, pointer(address), 4, oldprotect, @oldprotect);
Если CE может писать, значит и приложение обладающее привилегиями отладчика и доступом на запись/чтения региона виртуальной памяти может писать.
CE не использует драйвер для изменения памяти целевого приложения, лишь для отладки.
------------ Дoбавленo в 21.24:
В общем, немного поправил элемент и добавил получение привилегий и использование VirtualProtectEx перед и после работы с памятью процесса.
------------ Дoбавленo в 21.26:
И не забывай запускать приложение от имени администратора.