Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

[C/C++] GetModuleHandle aus DLL (Update:nur noch Zeichensatz Frage)

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 ...

Antwort
Alt 21.06.11, 20:33   #1 (permalink)
 
Registriert seit: 03.04.11
Tsjuder Leistung: 8086
Likes: 10
Standard [C/C++] GetModuleHandle aus DLL (Update:nur noch Zeichensatz Frage)

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;
}
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!

Geändert von Tsjuder (22.06.11 um 09:38 Uhr)
Tsjuder ist offline   Mit Zitat antworten
Alt 22.06.11, 09:36   #2 (permalink)
Themenstarter
 
Registriert seit: 03.04.11
Tsjuder Leistung: 8086
Likes: 10
Standard

OK ich habs mittlerweile selber hinbekommen.
Code:
  hKernel = GetModuleHandle(L"kernel32.dll");
Damit geht es auch aus der DLL heraus.

Kann mir jemand den Unterschied erklären?
Zitat:
const wchar_t * lpszUeberschrift = L"Fehlermeldung";
Das einzig neue, was zu beachten ist, ist das große "L". Es sagt dem Compiler, daß der konstante String aus 16-Bit-Zeichen bestehen soll. Andernfalls bekommt man auch eine Fehlermeldung beim compilieren.
Ist das nicht das selbe wie ein wchar_t * und damit wie LPWSTR ? Aber trotzdem funktioniert es mit L"kernel32.dll" aber nicht mit (LPWSTR)"kernel32.dll" oder mit (LPCWSTR)"kernel32.dll".

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)
Tsjuder ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » [C/C++] GetModuleHandle aus DLL (Update:nur noch Zeichensatz Frage)
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61