Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.04;
Скачать: CL | DM;

Вниз

Исправить код процедуры в runtime   Найти похожие ветки 

 
o_serg   (2007-01-09 13:57) [0]

Попытался править код процедуры:
asm
mov al, byte ptr cs:[@edit] //-прекрасно работает-
mov al, 32
mov byte ptr cs:[@edit], al //-при выполнении этой строки вылетает ошибка "access violetion at address..."-
jmp @link
@edit:
db 45
@link:
end
Возможно ли вообще исправить код процедуры, если да то каким образом?


 
Сергей М. ©   (2007-01-09 14:05) [1]


> Возможно ли вообще исправить код процедуры


Возможно.

mov byte ptr [@edit], 32

А чтобы AV не схлопотать, нужно перед этим изменить права доступа к соотв.странице вирт.памяти процесса, в которой находится байт с адресом @edit.

см. VirtualProtect[Ex] с флагом PAGE_EXECUTE_READWRITE


 
Сергей М. ©   (2007-01-09 14:14) [2]


> o_serg   (09.01.07 13:57)


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


 
o_serg   (2007-01-09 14:32) [3]

Спасибо буду пробовать, про стек я не подумал, но пробовал записать в массив, при этом код выполняется нормально, но вызвать из него какую либо процедуру невозможно, вылетает с той же AV.


 
Джо ©   (2007-01-09 14:48) [4]

> но пробовал записать в массив, при этом код выполняется
> нормально, но вызвать из него какую либо процедуру невозможно,
> вылетает с той же AV.

Сегмент данных также не имет прав доступа для выполнения, см. [1].



Страницы: 1 вся ветка

Текущий архив: 2007.03.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.045 c
2-1171242638
Евгенич
2007-02-12 04:10
2007.03.04
Уважаемые мастера! Как инициализировать указатель?


1-1168463719
Extar
2007-01-11 00:15
2007.03.04
Разрешить редактировать только одну колонку в StringGrid как?


2-1171350089
daser
2007-02-13 10:01
2007.03.04
Как сделать, чтоб пользователь сам мог вгрузить в Image...


6-1159376066
SanJouK
2006-09-27 20:54
2007.03.04
Как отслеживать кол-во скачанных мегабайт с инета ?


4-1161152894
mxc
2006-10-18 10:28
2007.03.04
как генерировать GUID