Сейчас на форуме: tyns777, zds, JustLife (+4 невидимых)

 eXeL@B —› Программирование —› Запрос ReadProcessMemory или WriteProcessMemory был выполнен только частично
Посл.ответ Сообщение


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 09 апреля 2009 20:59
· Личное сообщение · #1

ктонить сталкивался с данной проблемой что за ошибка , Запрос ReadProcessMemory или WriteProcessMemory был выполнен только частично , бывает из за вируса , но в данном случае это не вирус. Каковы причины этой ошибки ? Везде описано что это может быть примерно , но нигде не описано конкретно причины по этому поводу. Спасибо

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 50.2 (постоянный)
Активность: 0.010
Статус: Участник

Создано: 09 апреля 2009 21:51
· Личное сообщение · #2

Тупо не вся память [ptr, ptr + size] доступна для чтения\записи.




Ранг: 340.0 (мудрец), 22thx
Активность: 0.120
Статус: Участник
THETA

Создано: 09 апреля 2009 23:17
· Личное сообщение · #3

mak
Такая ошибка может возникать если пытаешься прочитать или записать к недостпной странице памяти, как абсолютно верно сказал censor. Измени тип доступа страницы памяти в адресном пространстве процесса через VirtualProtectEx.

-----
Программист SkyNet




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 09 апреля 2009 23:30
· Личное сообщение · #4

Не помню код ошибки(NTSTATUS), какой там ?




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 09 апреля 2009 23:40
· Личное сообщение · #5

Clerk
код ошибки получить не могу , этот файл не грузится в олю , и вообще никуда, а при запуске показывает такое чудо. Кроме того что написано в заголовке ничего не происходит.

censor, FrenFolio
Окей , я гляну где возможна такая ситуация и попробую. Спасибо

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 09 апреля 2009 23:45
· Личное сообщение · #6

У тебя сисер стоит ?
Если да, то поставь условную точку останова на несколько сервисов, которые память юзают, тоесть NtReadVirtualMemory и NtWriteVirtualMemory, указав в условии текущий PID и Eax != 0.




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 10 апреля 2009 00:26
· Личное сообщение · #7

Такая ошибка может быть если NT хидере в директории к примеру ресурса RVA указан неверно, точнее указывает приблизительно на конец файла.. и когда NT загрузчик пытается файло грузануть в память и обработать этот RVA... то в конце концов вылетает "в небо"... т.е. RVA + размер ресурса оказываются больше виртуального размера файла... Приблизительно так... Может меня кто поправит?

-----
aLL rIGHTS rEVERSED!




Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 10 апреля 2009 04:22
· Личное сообщение · #8

Аа это ведь STATUS_PARTIAL_COPY. FrenFolio прав.
DaRKSiDE
Не понятно.. Имеешь ввиду ядерный лоадер ?
Но вроде он мессаги не боксит. Если юзермодный - то он вероятно может возвратить такую ошибку, сообщение он не выводит.
> "в небо"
Если исключение произойдёт, то финальный обработчик исключений может забоксить "Uknown software exception".
В лоадере нет кода, который выводил бы посредством NtRaiseHardError мессагу с тем кодом.
Могу предположить что боксит сторонний рантайм, например мсвбм или какойто код, который линкует в файл компилятор не зависимо от кодера. Единственный вариант - дебажить.



Ранг: 30.2 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 10 апреля 2009 08:31 · Поправил: undb
· Личное сообщение · #9

XXXXProcessMemory может выпасть с такой ошибкой если (самая частая ошибка программистов ) что вместо адреса (void * ) передали указатель на этот адрес
к примеру
dwAddres=0x78901111 что мы хотим прочитать
XXXXProcessMemory(&dwAddres ( Будет еррор так как читают\пишут больше чем величена стека )
А надо
XXXXProcessMemory((void *)dwAddres



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 10 апреля 2009 11:26 · Поправил: HiEndsoft
· Личное сообщение · #10

undb пишет:самая частая ошибка программистов вот это "программисты" (что ты пишешь - и есть доступ к невыделенной памяти или с неясными атрибутами)
Если дело в ReadProcessMemory или WriteProcessMemory то можно их перехватить (заинжектившись) и в обработчике перед вызовом True-ф-ции заюзать NtProtectVirtualMemory.
mak пишет: бывает из за вируса если это происходит при манипуляциях с чужим адресным пространством, то это может быть и кривой антивирус.

-----
продавец резиновых утёнков




Ранг: 116.5 (ветеран), 3thx
Активность: 0.070
Статус: Участник

Создано: 14 апреля 2009 10:33
· Личное сообщение · #11

У мня это было, когда секция отрезана в файле, а на нее в directories указывает RVA.




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 14 апреля 2009 15:34 · Поправил: mak
· Личное сообщение · #12

да верно ....у меня было как раз Valemox пишет:
У мня это было, когда секция отрезана в файле, а на нее в directories указывает RVA.


и каспер вмешивался когда .... эти 2 варианта и то первый просто по тупой ошибке. Третий вариант не проходил ...Тема освещена , думаю вопрос закрыт. Всем спасибо !

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube



 eXeL@B —› Программирование —› Запрос ReadProcessMemory или WriteProcessMemory был выполнен только частично
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати