Сейчас на форуме: tyns777, zombi-vadim (+5 невидимых)

 eXeL@B —› Программирование —› VirtualAlloc переодически возращает NULL
Посл.ответ Сообщение


Ранг: 71.9 (постоянный), 4thx
Активность: 0.040
Статус: Участник

Создано: 13 мая 2015 17:07
· Личное сообщение · #1

Иногда VirtualAlloc возвращает NULL, что делать в такой ситуации? Как все таки получить нужную память?

Code:
  1.     ptr= (unsigned char *)VirtualAlloc((LPVOID)(old_header->OptionalHeader.ImageBase),
  2.         old_header->OptionalHeader.SizeOfImage,
  3.         MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);





Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 13 мая 2015 17:13
· Личное сообщение · #2

Получить последнюю ошибку и узнать в чем дело?!

-----
Лучше быть одиноким, но свободным © $me





Ранг: 71.9 (постоянный), 4thx
Активность: 0.040
Статус: Участник

Создано: 13 мая 2015 17:17
· Личное сообщение · #3

BoRoV - дело в том, что VirtualAlloc не может выделить регион требуемого размера, поэтому функция возвращает NULL. Хотя суммарное количество свободной памяти у меня навалом.




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 13 мая 2015 17:20
· Личное сообщение · #4

jangle
Из-за фрагментации памяти, возможно, есть смысл использовать HeapAlloc?

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 13 мая 2015 17:20
· Личное сообщение · #5

Ищите косяк в своем коде.

-----
TEST YOUR MIGHT





Ранг: 150.3 (ветеран), 175thx
Активность: 0.160.07
Статус: Участник

Создано: 13 мая 2015 17:21 · Поправил: -=AkaBOSS=-
· Личное сообщение · #6

GetLastError что говорит?
если сделать VirtualFree и повторить аллок, что будет?

мсдн: VirtualAlloc cannot reserve a reserved page
и еще
If the lpAddress parameter is not NULL, the function uses the lpAddress and dwSize parameters to compute the region of pages to be allocated. The current state of the entire range of pages must be compatible with the type of allocation specified by the flAllocationType parameter. Otherwise, the function fails and none of the pages are allocated.

Так ли уж вам нужна память именно по указанному адресу? Может, есть смысл первым параметром слать NULL - тогда аллокнет где сможет, а вам останется релоки настроить.

| Сообщение посчитали полезным: jangle


Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 13 мая 2015 17:41
· Личное сообщение · #7

потому что адрес занят и скорее всего там не VirtualFree делать надо, а ZwUnmapViewOfSection?
а лучше понять, почему так происходит и не задавать глупых вопросов.

-----
[nice coder and reverser]





Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 13 мая 2015 17:45
· Личное сообщение · #8

Что мешает в оле в memory map глянуть на момент получения ошибки?

-----
IZ.RU



 eXeL@B —› Программирование —› VirtualAlloc переодически возращает NULL
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати