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

 eXeL@B —› Вопросы новичков —› Ошибка при использовании WriteProcessMemory
Посл.ответ Сообщение

Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 мая 2006 03:37 · Поправил: MarQus
· Личное сообщение · #1

Пишу прогу, в которой использую WriteProcessMemory, для изменения некоторых данных в своих секциях.
Но вот не задача - иногда появляется ошибка "Only part of ReadProcessMemory Or WriteProcessMemory request was completed" (ERROR_PARTIAL_COPY).

Вот фрагмент кода:
call GetCurrentProcessId
mov pid, eax

push pid
push 1
push 28h ; PROCESS_VM_WRITE | PROCESS_VM_OPERATION
call OpenProcess
mov prochandle, eax

push temp
push 1
push offset write_from
push offset write_to
push prochandle
call WriteProcessMemory

Если кто-то встречался с подобным, подскажите, в каких случаях (при каких условиях) может возникать данная ситуация? Как избежать\избавиться?



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

Создано: 13 мая 2006 09:24 · Поправил: tundra37
· Личное сообщение · #2

MarQus
По смыслу сообщения ясно, что часть данных не записана. Я могу только глупую информацию дать : гоняя под айсом большие программы я обнаружил, что часть секций команд заполнена командой INVALID, точнее просто не загружена в реальную память. Возможно ты нарвался на похожий случай - память еще просто не выделена и WriteProcessMemory в такой ситуации не работает. Если ты пишешь в область команд, то по моему опыту, пока команды оттуда не начнут выполнятся - секция числится в виртуале.
Сейчас подумал - скорее всего так бывает когда секций команд больше 1. 1-я секция вроде все-таки грузится.
++++++++++++++++++++++++++++++++
dotnet.di.unipi.it/Content/sscli/docs/doxygen/pal/debug_8c-source.html
Класс - тут текст WriteProcessMemory - сам смотри из-за чего ошибка выдается.


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


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