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

Вниз

Изменение кода при выполнении программы   Найти похожие ветки 

 
programania ©   (2004-10-05 18:34) [0]

Можно ли изменить код процедуры во время работы программы?
Если менять массив размещенный по адресу этой
процедуры происходит защита доступа хотя в массиве видно
что там тот же код что и в окне CPU у этой процедуры.

Или можно ли запустить выполнение кода из массива?
если переменной типа процедура присвоить адрес этого массива,
в массив записать код другой процедуры того же типа
и вызвать ее: опять защита доступа.


 
Суслик ©   (2004-10-05 18:50) [1]

Я такое не делал, но думаю можно.

Я бы стал рыть в сторону использования функции VirtualProtect и родественных ей.
Я не помню какие ограничения у этой функции. Думаю, что на данный вопрос может замечательно ответить книга Рихтера, windows для профи - глава про управление памятью. Или msdn можно посмотреть.


 
Суслик ©   (2004-10-05 19:01) [2]

Думаю, что можно попробовать взять адрес процедуры, используя VirtualQuery узнать базовый адрес блока, затем через VirtualProtect сменить уровень защиты, изменить код.

Я бы начал с этого...


 
Sha ©   (2004-10-05 19:01) [3]

> programania ©   (05.10.04 18:34)  

VirtualProtect
PAGE_EXECUTE_READWRITE
FlushInstructionCache


 
Digitman ©   (2004-10-06 08:59) [4]


> можно ли запустить выполнение кода из массива?


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


 
Sha ©   (2004-10-06 10:18) [5]

Digitman ©   (06.10.04 08:59) [4]

Добавлю, что такой вариант работает иногда медленнее.
И добавляет проблем отладчику :)


 
wicked ©   (2004-10-06 12:51) [6]

> Digitman [4]
так и знал, что кто-то посоветует.... :)
остается сказать - читайте описание 2-го сервис пака для WinXP....


 
Sha ©   (2004-10-06 13:21) [7]

> wicked ©   (06.10.04 12:51) [6]

Неужели MS не даст исполнять код на стеке?
Много программ пострадает :(


 
Anatoly Podgoretsky ©   (2004-10-06 13:25) [8]

Sha ©   (06.10.04 13:21) [7]
Туда им и дорога.



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

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

Наверх




Память: 0.48 MB
Время: 0.038 c
1-1098904664
mishapost
2004-10-27 23:17
2004.11.14
Вывод длинной строки


4-1096725264
aik21
2004-10-02 17:54
2004.11.14
Проверка, выдвинута ли дверца CD.


4-1097055635
3fc
2004-10-06 13:40
2004.11.14
Вывод текста под углом средствами WinAPI


9-1090223437
Evgeniy_K
2004-07-19 11:50
2004.11.14
Поворот на 180 градусов - DirectDraw


1-1098863269
digger
2004-10-27 11:47
2004.11.14
Hint