Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.064 c
14-1098863072
alles
2004-10-27 11:44
2004.11.14
Ну и вопросы по HTML!


1-1098600940
makey
2004-10-24 10:55
2004.11.14
Иконка в понели задач


1-1099384385
WondeRu
2004-11-02 11:33
2004.11.14
Assert... Зачем он нужен???


14-1097962722
Кто---то
2004-10-17 01:38
2004.11.14
Есть ли стандартный Диалог с КомбоБоксом ?


14-1099141295
Ilya___
2004-10-30 17:01
2004.11.14
Подскажите как работает система баннерного





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский