Добрый день!
Я пишу 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(). Как правильно модифицировать память процесса?
Зачем это нужно описано здесь:
Здравствуйте, mihart, Вы писали:
M>M> result = WriteProcessMemory(pHandle, (LPVOID)(test), (LPVOID)0xC3, sizeof(unsigned char), NULL);
M>
M>Что я делаю неправильно?
Копируете из адреса (LPVOID)0xC3?