Mithilfe von .dll andere .dll in Prozess injecten
-
Man sollte CreateThread nicht innerhalb von DllMain ausführen!
Man darf grundsätzlich nicht alle beliebigen Windows Funktionen in der DllMain ausführen, da diese nicht reentrant ist.Suche mal im Netz "DllMain CreateThread"!
-
hab herausgefunden dass man auch keine kernel oder user Funktionen aufrufen sollte. was soll der mist? wie soll man das dann in injecteten dlls machen? Ö_Ö
-
reetant schrieb:
hab herausgefunden dass man auch keine kernel oder user Funktionen aufrufen sollte. was soll der mist? wie soll man das dann in injecteten dlls machen? Ö_Ö
Du sollst das nur nicht in DllMain tun!
Du kanst also jederzeit eine Dll laden, in dieser Dl eine Funktion aufrufen die Deinen Injektions-Code durchführt.Außerdem 1.: Ich wage zu bezweifeln das "Injection" wirklich notwendig ist...

Außerdem 2.: Verstoße ich mal wieder gegen meine Regeln an Threads teilzunehmen bei denen es um DLL-Injection geht.
-
Martin Richter schrieb:
Man sollte CreateThread nicht innerhalb von DllMain ausführen!
Man darf grundsätzlich nicht alle beliebigen Windows Funktionen in der DllMain ausführen, da diese nicht reentrant ist.Suche mal im Netz "DllMain CreateThread"!
Wo zum Teufel soll es denn sonst ausführen/laden lassen?
Anders geht es ja wohl nicht? Oder irre ich mich? O.o
Oder soll ich vllt. sowas in der Art machenvoid function() { CreateThread(NULL, 0, Inject, NULL, 0, NULL); }und dann in DLLMain
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, LPVOID lpvReserved) { if (fdwReason == DLL_PROCESS_ATTACH) { EnableDebugPrivileges(); function(); MessageBox(NULL, "DLL wurde injected!", "DLL1", MB_OK); } return TRUE; }Oder wie genau?
-
strange schrieb:
Wo zum Teufel soll es denn sonst ausführen/laden lassen?
Mäßige Dich im Ton und lerne erstmal was über DLLs.
strange schrieb:
Anders geht es ja wohl nicht? Oder irre ich mich? O.o
Ja Du irrst Dich!
strange schrieb:
Oder soll ich vllt. sowas in der Art machen
...Nein!
Es ist immer noch im Kontext von DllMain.Tipp: Ist Dir bewusst das man
1. eine DLL Laden
2. Mit GetProcAddr einen Einsprungpunkt bestimmen kann. (nach dem laden)
3. Diese Funktion dann ausführen kann
?Dann liegt Dein Code in der DLL wird aber eben nicht im Kontext von DllMain ausgeführt.
BTW: Auch der Aufruf vom MessageBox in DllMain gehört sich nicht.
-
Martin Richter schrieb:
Mäßige Dich im Ton und lerne erstmal was über DLLs.
Das war eher ein ratloses Fragen, wollte dich jetzt nicht damit anmachen ^^
Und ich versuche ja gerade was über DLL's zu lernen
Werde mal nachschauen wegen GetProcAddr, danke für deine Antwort!
-
mein gott versteht ihr es nicht oder so?
Was Martin meint ist sowas hier: http://wiki.hackerboard.de/index.php/DLL-Injection
hier wird dllmain nicht verwendet, sondern eine Funktion in der dll die als
extern "C" void __declspec(dllexport) deklariert ist.
Mir ist es selber ein rätsel warum überall wenn man nach "dll injection" sucht jeder alles in DllMain macht!
-
martinversteher schrieb:
mein gott versteht ihr es nicht oder so?
Endlich versteht mich jemand.

Ich verstehe auch weiterhin in keiner Weise warum alle Anfängersich immer auf die schwierigsten Themen stürzen müssen.
Ansonsten ist dieser Thread für mich beendet...
-
martinversteher schrieb:
mein gott versteht ihr es nicht oder so?
Was Martin meint ist sowas hier: http://wiki.hackerboard.de/index.php/DLL-Injection
hier wird dllmain nicht verwendet, sondern eine Funktion in der dll die als
extern "C" void __declspec(dllexport) deklariert ist.
Mir ist es selber ein rätsel warum überall wenn man nach "dll injection" sucht jeder alles in DllMain macht!Danke, werds mir mal anschauen!
-