Сейчас на форуме: (+4 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Ошибка при использовании WriteProcessMemory |
Посл.ответ | Сообщение |
|
Создано: 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 Если кто-то встречался с подобным, подскажите, в каких случаях (при каких условиях) может возникать данная ситуация? Как избежать\избавиться? ![]() |
|
Создано: 13 мая 2006 09:24 · Поправил: tundra37 · Личное сообщение · #2 MarQus По смыслу сообщения ясно, что часть данных не записана. Я могу только глупую информацию дать : гоняя под айсом большие программы я обнаружил, что часть секций команд заполнена командой INVALID, точнее просто не загружена в реальную память. Возможно ты нарвался на похожий случай - память еще просто не выделена и WriteProcessMemory в такой ситуации не работает. Если ты пишешь в область команд, то по моему опыту, пока команды оттуда не начнут выполнятся - секция числится в виртуале. Сейчас подумал - скорее всего так бывает когда секций команд больше 1. 1-я секция вроде все-таки грузится. ++++++++++++++++++++++++++++++++ dotnet.di.unipi.it/Content/sscli/docs/doxygen/pal/debug_8c-source.html Класс ![]() ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Ошибка при использовании WriteProcessMemory |