Главная страница
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.048 c
14-1099100990
Думкин
2004-10-30 05:49
2004.11.14
С днем рождения! 30 октября


3-1097842968
Vlad
2004-10-15 16:22
2004.11.14
Компоненты прямого доступа к DBF


1-1098694044
Alibaba
2004-10-25 12:47
2004.11.14
TListBox


1-1098891203
Lexx3D
2004-10-27 19:33
2004.11.14
Dll


1-1099392934
PC
2004-11-02 13:55
2004.11.14
Подгрузка битмапов с проверкой