Форум программистов, компьютерный форум CyberForum.ru

VirtualProtect - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 5.00
NightmareCode
14 / 7 / 1
Регистрация: 20.09.2009
Сообщений: 89
13.10.2009, 12:49     VirtualProtect #1
Где можно узнать значение последнего параметра VirtualProtect (typedef DWORD* PDWORD)
PDWORD lpflOldProtect? Если ставить 0 функция всегда будет терпеть неудачу и возвращать 0.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alexandoros
226 / 64 / 4
Регистрация: 02.06.2009
Сообщений: 280
13.10.2009, 13:52     VirtualProtect #2
http://msdn.microsoft.com/en-us/libr...98(VS.85).aspx

DWORD OldProtect;
VirtualProtect( lpAddress, wSize, flNewProtect, &OldProtect);
NightmareCode
14 / 7 / 1
Регистрация: 20.09.2009
Сообщений: 89
13.10.2009, 16:29  [ТС]     VirtualProtect #3
Я знаю, какие параметры у VirtualProtect меня интересует где можно инициализировать OldProtect?
При значении нуль или неинициализированной переменной функция всегда терпит неудачу.
То есть вот так не пройдет:
const int Addr1=0x32423425;
char st[256]="";
int NumberOfBytes1=sizeof(st);

C++
1
VirtualProtect((LPVOID)Addr1, NumberOfBytes1, PAGE_EXECUTE_READWRITE, 0);
Или:
C++
1
2
DWORD *pflOldProtect;
VirtualProtect((LPVOID)Addr1, NumberOfBytes1, PAGE_EXECUTE_READWRITE, pflOldProtect);
Где можно инициализировать OldProtect?
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
13.10.2009, 17:56     VirtualProtect #4
NightmareCode,
lpflOldProtect
A pointer to a variable that receives the previous access protection value of the first page in the specified region of pages. If this parameter is NULL or does not point to a valid variable, the function fails.
Подчеркнутое я смотрю ты заметил, а теперь прочитай внимательно то, что написано синим шрифтом.
NightmareCode
14 / 7 / 1
Регистрация: 20.09.2009
Сообщений: 89
13.10.2009, 19:42  [ТС]     VirtualProtect #5
Ну и как получить указатель на переменную, которая возвращает значение предыдущего уровня защиты в определенном регионе страницы?

P.S. Сам то пользовался этой функцией?
Alexandoros
226 / 64 / 4
Регистрация: 02.06.2009
Сообщений: 280
13.10.2009, 21:51     VirtualProtect #6
Цитата Сообщение от NightmareCode Посмотреть сообщение
Я знаю, какие параметры у VirtualProtect меня интересует где можно инициализировать OldProtect?
Раз ты задаеш такой вопрос, после того как тебе дали ссылку в мсдн, значит нихрена ты не знаеш, слушать никого нехочеш, и учить ничего не собираешся. Чего ты вообще тут забыл? При том что я написал тебе уже правильный ответ, который ты даже попробовать не удосужился.

Цитата Сообщение от NightmareCode Посмотреть сообщение
При значении нуль или неинициализированной переменной функция всегда терпит неудачу.
То есть вот так не пройдет:
C++
1
2
3
4
const int Addr1=0x32423425;
char st[256]="";
int NumberOfBytes1=sizeof(st);
VirtualProtect((LPVOID)Addr1, NumberOfBytes1, PAGE_EXECUTE_READWRITE, 0);
Или:
C++
1
2
DWORD *pflOldProtect;
VirtualProtect((LPVOID)Addr1, NumberOfBytes1, PAGE_EXECUTE_READWRITE, pflOldProtect);
Где можно инициализировать OldProtect?
Естественно эта ересь не пройдет. В коде 2 логические ошибки.

Прочитай мсдн по каждому параметру ВНИМАТЕЛЬНО.
NightmareCode
14 / 7 / 1
Регистрация: 20.09.2009
Сообщений: 89
13.10.2009, 22:57  [ТС]     VirtualProtect #7
Сам-то хоть использовал функцию VirtualProtect. Что ты мне ссылку на мсдн суешь я и так сначала туда захожу, а потом если что непонятно на форум. Где ты ответил на мой вопрос покажи выдели цитатой, а не цитируй мсдн!
Monte-Cristo
 Аватар для Monte-Cristo
2807 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
13.10.2009, 23:07     VirtualProtect #8

Не по теме:

NightmareCode, ты жжешь....



NightmareCode, ты чувствуешь разницу между указателем на переменную и переменной указателем (причем не инициализированной)?

Тебе привести цитату Alexandoros? Смотри второй пост, прямо под ссылкой.
NightmareCode
14 / 7 / 1
Регистрация: 20.09.2009
Сообщений: 89
14.10.2009, 01:21  [ТС]     VirtualProtect #9
Возможно ли изменить значение в адресном пространстве с использованием функции WriteProcessMemory константное значение, если поменять уровень защиты с помощью VirtualProtect к read, write?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2009, 02:16     VirtualProtect
Еще ссылки по теме:

Адресация процедур на asm (дублирование кода, VirtualProtect) C++ Builder
Некорректное возвращения значения GetModuleFileName и VirtualProtect + MessageBox C++ WinAPI

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Alexandoros
226 / 64 / 4
Регистрация: 02.06.2009
Сообщений: 280
14.10.2009, 02:16     VirtualProtect #10
Если прав на VirtualProtect хватит, то можно.
Yandex
Объявления
14.10.2009, 02:16     VirtualProtect
Ответ Создать тему
Опции темы

Текущее время: 08:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru