![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| kin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 9.5.2008 Репутация: нет Всего: 6 |
Здравствуйте. Есть следующий участок кода:
Итак, мне нужно в процессе работы программы выделить участок памяти равный размеру X по адресу 0x00400000 (Базовый адрес загрузки PE файлов по умолчанию). ImageBase моего exe - 0x00500000. Проблема: У VirtualAlloc выделяет память не всегда; когда выделяет, когда нет. Поработав с отладчиком, увидел, что иногда по данному адресу уже лежат какие-то данные, либо этот участок зарезервирован. Наверное в связи с этим, VirtualAlloc и возвращает NULL. Вопрос: Как можно указать в моем приложении PE загрузчику (может директивы какие и пр.), чтобы он не проецировал ничего на такой-то участок памяти, не резервировал его и пр.? Так как, данные мне нужно разместить именно в этом участке и ни в каком другом. Если что-то не понятно, спрашивайте. P.S. Ставил GetLastError после VirtualProtect. Код ошибки почему-то тоже не постоянный. То 87-"Параметр задан неверно", то 487-"Попытка обращения к неверному адресу". |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 2 Всего: 88 |
Только успеть зарезервировать этот регион раньше. Что мешает работать по другому адресу? Если отсутствие релоков в экзешнике, то в этой ситуации и виндовый загрузчик не загрузит
-------------------- Обижено школьников: 8 |
|||
|
||||
| kin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 9.5.2008 Репутация: нет Всего: 6 |
Тогда, получается, это нужно делать тогда еще до запуска моего приложения, чтобы загрузчик не успел спроецировать туда данные. Этот вариант разумеется отпадает. Далее, bems, я правильно понял, что можно загрузить образ по другому адресу и обработать таблицу релокаций? Но тут же вопрос, если в exe-шнике нет релокаций, то это значит что он должен грузиться только по одному ImageBase или что в нем просто нет абсолютных адресов, и он может грузиться по любому адресу? |
|||
|
||||
| bems |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 2 Всего: 88 |
-------------------- Обижено школьников: 8 |
||||||
|
|||||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |