Napisałem taką funkcję, która wywołuje funkcje w procesie, jednak nie działa funkcja FreeLibrary
Działa tylko jeżeli funkcją, którą chce wywołać jest LoadLibraryA - wtedy działa i ładuję biblioteke.
Jednak gdy dam FreeLibrary nie zwalnia biblioteki.
Oto kod funkcji.
void InjectDll(DWORD pid, char* dllPath)
{
HANDLE hProcess;
HANDLE tHandle;
hProcess = OpenProcess(PROCESS_ALL_ACCESS,false,pid);
void* address = VirtualAllocEx(hProcess,NULL,strlen(dllPath),MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE);
WriteProcessMemory(hProcess,address,(LPVOID)dllPath,strlen(dllPath),NULL);
HMODULE hK32 = GetModuleHandle("Kernel32");
tHandle = CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)GetProcAddress(hK32,"FreeLibrary"),address,0,NULL);
WaitForSingleObject(tHandle,10000);
VirtualFreeEx(hProcess,address,0,MEM_RELEASE);
CloseHandle(hK32);
CloseHandle(hProcess);
}
Co zrobić żeby działało?
Pozdrawiam.
Z góry dziękuje za pomoc.