Hallo zusammen,
ich beschäftige mich zur Zeit mit DLL Injection. Das injecten der DLL funktioniert soweit nur möchte ich jetzt (wie im anderen Thread geschildert) verschiedene Funktionen umschreiben, daher möchte ich eine Funktion in der DLL aufrufen die mir die Adressen im Prozess verschiedener Funktionen ermittelt. Das klappt aber irgendwie nicht wirklich.
Mal ein wenig Code:
CDW hatte mir geraten den kompletten Namen also "kernel32.dll" anzugeben bei GetModuleHandle. Bei dem obrigen Code ist das Problem, dass ich in der Main so ein Handle auf die Kernel32.dll bekomme, aber in der DLL nicht, also auch wenn ich es genauso mache wie in der Main (also ohne "*.dll". Weiß jemand warum oder ist es nicht möglich diese Adressen aus einer DLL heraus zu ermitteln?
Vielen Dank!
ich beschäftige mich zur Zeit mit DLL Injection. Das injecten der DLL funktioniert soweit nur möchte ich jetzt (wie im anderen Thread geschildert) verschiedene Funktionen umschreiben, daher möchte ich eine Funktion in der DLL aufrufen die mir die Adressen im Prozess verschiedener Funktionen ermittelt. Das klappt aber irgendwie nicht wirklich.
Mal ein wenig Code:
Code:
Aus meiner Main.cpp:
int DLLInject() {
LPVOID memory;
LPTHREAD_START_ROUTINE threadAddr = 0;
HMODULE hKernel;
DWORD wBytes = 0;
memory = VirtualAllocEx(hCatched,NULL,strlen(dllInjectPath),MEM_COMMIT,PAGE_READWRITE);
hKernel = GetModuleHandle("Kernel32");
threadAddr = (LPTHREAD_START_ROUTINE) GetProcAddress(hKernel,"LoadLibraryA");
WriteProcessMemory(hCatched,memory,(LPVOID)dllInjectPath,strlen(dllInjectPath),&wBytes);
HANDLE thread = CreateRemoteThread(hCatched,NULL,0,threadAddr,memory,0,NULL);
WaitForSingleObject(thread,INFINITE);
VirtualFreeEx(hCatched,memory,0,MEM_RELEASE);
CloseHandle(thread);
return 0;
}
Aus der DLL:
extern "C" void __declspec(dllexport) Funktion() {
HMODULE hKernel;
LPTHREAD_START_ROUTINE threadAddr;
hKernel = GetModuleHandle((LPCWSTR)"kernel32.dll");
printf("%d",hKernel);
threadAddr = (LPTHREAD_START_ROUTINE) GetProcAddress(hKernel,"LoadLibraryA");
printf("LoadLibraryA Funktion befindet sich bei: %x",threadAddr);
return;
}
CDW hatte mir geraten den kompletten Namen also "kernel32.dll" anzugeben bei GetModuleHandle. Bei dem obrigen Code ist das Problem, dass ich in der Main so ein Handle auf die Kernel32.dll bekomme, aber in der DLL nicht, also auch wenn ich es genauso mache wie in der Main (also ohne "*.dll". Weiß jemand warum oder ist es nicht möglich diese Adressen aus einer DLL heraus zu ermitteln?
Vielen Dank!
Zuletzt bearbeitet: