Jak "odtrzyknąć" dll z procesu ?

0

Witam.

Mam pytanie.
Jak zwolnić biblioteke, która jest wstrzyknięta do jakiegos procesu?

Powiedzmy ze znam id procesu gdzie sie znajduje.

Napisalem funkcje ktora skanuje procesy i sprawdza do jakich procesow jest wstrzyknięta ta biblioteka.

Pozostalo ją "odtrzyknąć"

Pozdrawiam i z góry dziękuje za pomoc.

0

CreateRemoteThread w punkcie FreeLibrary lub UnmapViewOfFile.

0

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.

0

Zapomniałem, że funkcja FreeLibrary ma parametr z HMODULE, a nie ścieżką DLL, i dlatego nie działa. Ale jak przekazać tam typ HMODULE ? HMODULE dll'a znam bo napisałem funkcje która ją pobiera.

Pozdrawiam i prosze o pomoc.

0

Do zmiennej address masz wstawić hModule, czyli adres gdzie załadowałeś dll. Podczas 'wstrzykiwania' exitcode wątku to zwraca.

1 użytkowników online, w tym zalogowanych: 0, gości: 1