Mithilfe von .dll andere .dll in Prozess injecten
-
frage wenn du die eine .dll schon in MSPAINT hast könntest du die andere dll auch normal einfach mit LoadLibrary laden
oder möchtest du sie umbedingt injecten ?
-
mspaint und notepad sind zwei verschiedene programme

möglich sollte das schon sein, allerdings halte ich es für riskant, innerhalb
von der DllMain, die ja von windows aus geschützt ist, irgentwelche prozess-
übergreifenden aktionen zu starten.warum injectest du nicht einfach beide dlls vom loader aus? das paint irgentwelche
zugriffsrechte hat wäre mir neu
-
Ganz einfach, ich möchte das solange Paint auf ist, eine DLL in Notepad injected, wenn der aufgeht. Also wenn ich den Notepad dann wieder schliessen würde und ihn dann wieder öffnen würde, würde sich die DLL wieder automatisch injecten (weil mspaint ja immernoch auf ist).
Der Sinn war also quasi eine "Auto Injection" in den Notepad, solange mspaint offen ist. Und darum möchte ich auch nicht beides vom Loader aus injecten...
-
Überprüfe einfach mal die Rückgabewerte und ruf GetLastError() auf
-
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!
-