DllInjection => Prozess hängt
-
Nein er läuft weiter wie ne eins wenn er nix machen muss

Aber was sagt mir das?Vielen Dank,
Xalon
-
Entweder ist Aufruf von MessageBox fehlerhaft (z.B. falsche, ungültige Stringadressen).
Probier mal den einfachsten aller Aufrufe :MessageBox (0,"text","caption",0);Oder der Remoteprozess darf nicht z.B. durch eine MessageBox unterbrochen werden.
Probier mal ob jeder Remoteprozess hängenbleibt....oder der Remoteprozess hat "USER32" nicht geladen.
Dann gibt es eben keine MessageBox im Remoteprozess.
-
Leider alles schon geschehen

Ich benutz so einen einfachen Aufruf und die MessageBox poppt auch auf nur der
RemoteProcess (und zwar alle die ich versucht hab) hängt sich aufDanke,
Xalon
-
Dass jeder "injected" Prozess hängenbleibt, kann ich mir schwer vorstellen.
Hat der Remoteprozess eine "selfmade" DLL (meist erkennbar am Modulnamen) geladen, die "seltsam" reagiert wenn ein Thread gestartet wird ?
-
um welchen ziel prozess handelt es sich eigentlich?
Ich hatte mal versucht prozesse über detour/inline hooking zu verstecken.
im taskmanager von w2k hat das wunderbar geklappt. allerdings is mir der process explorer von sysinternals immer wieder abgeschmiert...mit ähnlichen problemen wie bei dir. damals lage es aber (vermutlich) daran, dass dort die funktion, die gehookt wurde zu oft vom zielprzess ausgerufen wurde. also gab es memory exceptions während ich meinen inline jmp reingeschrieben hab. (hab daran aber nichtmehr weitergemacht. thread suspend wäre sicherlich ne lösung gewesen...)was passiert in deiner DllMain() sonst noch alles?
Mal das ganze im olly angeschaut und durchdebuggt?greets
RadiatioN Off
-
Also hier is meine ganze Test-DLL
#define MAKE_DLL #define _WIN32_WINNT 0x500 #include <windows.h> using namespace std; extern "C" int WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) { switch( fdwReason ) { case DLL_PROCESS_ATTACH: MessageBox(NULL,"Gut","Injected",MB_OK); break; case DLL_PROCESS_DETACH: break; } return TRUE; }Ich hab bis jetzt als Ziel den IE, ICQ und FF probiert.
Hmm mim Debugger hab ich mir schon überlegt allerdings bin ich da nicht so bewandert...
Das ganze hat übrigens zum Zweck das ich mein API-Hooking Tutorial ( http://wiki.hackerboard.de/index.php/Windows_API ) erweitern will
Hast du vielleicht den Code noch mit dem du damals injecten wolltest?@merker : Also das die 3 Testopfer SelfMade DLLs geladen haben denk ich nicht.
Und doch alle 3 kacken ab,nur mein Code (hab zum Test mal eine andere DLL mit Code injected)läuft weiter wie ne 1 -.-Xalon
P.S:Wow schon 2 Seiten hätte nicht gedacht das ich so viel Hilfe bekomme,vielen Dank =))
-
Soo also ich weiß jetzt an was es liegt,glaub ich

WaitForSingleObject(thread,INFINITE); // <== kommt irgendwie nie zum ende o_O VirtualFreeEx(hProcess,VirtualMem,0,MEM_RELEASE); CloseHandle(thread); CloseHandle(hProcess); return 0; }Wenn ich mit diesem Code injecte dann hängt der Prozess genau solange wie die DLLMain arbeitet.
Wenn ich die MessageBox ausgebe dann hängt er bis ich OK Drücke.
Wenn ich allerdings umfangreicheren Code einschleuse dann hängt er sich auf
da dieser eine While(1) MainSchleife hat
Aber eigentlich sollte ein Thread und ne DLL doch einen laufenden Prozess nicht unterbrechen?!
Schon mal vielen Dank für Tipps

Xalon
-
Wenn eine DLL geladen wird, dann wird in dem Prozess eine *globaler* Critical Section betreten. Es können dann keine andere DLLs mehr geladen werden, bis die DLL aus ihrem Entry wieder zurück ist. Somit kann sich schon der ganze Prozess "aufhängen".
-
Und wie funktionier DLL injection dann?
Weil Threads kann ich in der main auch nicht callen.Schon mal Danke,
Xalon
-
Mit zwei Threads :
Einer lädt die DLL, der andere ruft die "ThreadFunc" auf.
-
Es funktioniert

Hätte nicht gedacht das ichs noch hinbring,das Posten meines Problems im Forum
war mehr so ein letzter Hilferuf,ohne wirklich zu denken das es noch klappt.Nochmal vielen Dank an alle die mir geholfen haben

Xalon