| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: [C/C++] GetModuleHandle aus DLL (Update:nur noch Zeichensatz Frage) im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo zusammen, ich beschäftige mich zur Zeit mit DLL Injection. Das injecten der DLL funktioniert soweit nur möchte ich ...
![]() |
| | #1 (permalink) |
| Registriert seit: 03.04.11 ![]() Likes: 10 | Anzeige 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: 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;
} Vielen Dank! Geändert von Tsjuder (22.06.11 um 09:38 Uhr) |
| | |
| | #2 (permalink) | |
| Themenstarter Registriert seit: 03.04.11 ![]() Likes: 10 | OK ich habs mittlerweile selber hinbekommen. Code: hKernel = GetModuleHandle(L"kernel32.dll"); Kann mir jemand den Unterschied erklären? Zitat:
Das veranlasste mich dazu mal nachzugucken welcher Zeichensatz in dem Projekt eingestellt war in dem ich die DLL schreibe, dieser war auf Unicode jetzt steht er auf Multibyte wie im Main Programm, daher funktioniert das in der Main auch einfach mit "kernel32.dll" ohne irgendeinen Cast vorher zu machen. Trotzdem würde ich gerne wissen wo genau das Problem dabei ist/war. Vielen Dank. P.S: Ich arbeite mit Microsoft Visual C++ Express 2010. Geändert von Tsjuder (22.06.11 um 09:39 Uhr) | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |