WriteProcessMemory был выполнен только частично (ошибка 299)
От: mihart  
Дата: 08.01.15 14:42
Оценка:
Добрый день!
Я пишу Dll, которую подключает приложение, к которому у меня нет исходного кода.
Мне нужно чтобы при загрузке dll изменялась как память самого приложения (приложение предоставляет право модифицировать код), так и память загружаемой DLL.
С изменением памяти приложения проблем нет, модифицируется отлично!

Проблема с тем, что я никак не могу модифицировать память самой библиотеки.
Вот мой код:

int test() {return 0;}

void change() {

    DWORD oldProtect = 0;
    HANDLE pHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId());
    int result = VirtualProtectEx(pHandle,(int*)(test), 256, PAGE_EXECUTE_READWRITE, &oldProtect);
    result = WriteProcessMemory(pHandle, (LPVOID)(test), (LPVOID)0xC3, sizeof(unsigned char), NULL);
    result = GetLastError();
}


Что я делаю неправильно?
Мне нужно переписать код по адресу, в котором находится функция test(). Как правильно модифицировать память процесса?
Зачем это нужно описано здесь:
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.