DLL-Injection in ASM?

Moin,
habe versucht eine DLL-Injection in ASM zu schreiben.
Der Code funktioniert einwandfrei, keine Fehler.
Problem bloß bei der Sache:
Die DLL wird nicht ausgeführt.
Ob sie nicht in den Speicher geladen, nicht geöffnet, nicht gefunden oder was weiß ich wird weiß ich nicht, deshalb wollte ich euch fragen.
Hat einer hier eine Idee dazu?

Code:
http://nopaste.biz/?9971

Greetz
 
Hab das mal kurz überflogen.
Du schreibst anscheinend den Dateinamen der DLL einfach in den fremden Prozess. Ich geh mal davon aus, dass der Prozess dann wegen ner AccessViolation abstürzt, oder?
Du musst da unabhängigen Code reinschreiben, der dann, wenn du ne DLL injecten willst, deine DLL nachlädt.

Hier ein Tutorial: http://www.mitglied.lycos.de/maiselthomas/, müsste auch irgendwo im Habo-Wiki sein.
 
Also es lag an zwei Fehlern:
1.
Code:
invoke        OpenProcess, PROCESS_ALL_ACCESS, FALSE, addr dwPid
Du musst die PID übergeben und nicht den Pointer dazu also:
Code:
invoke        OpenProcess, PROCESS_ALL_ACCESS, FALSE,dwPid
2.
Code:
invoke        WriteProcessMemory, hProcess, hModule, 4096, sizeof szDll, addr dwBytesWritten
Der dritte Parameter soll ein Pointer zu dem Buffer sein also so:
Code:
invoke        WriteProcessMemory, hProcess, hModule, addr szDll, sizeof szDll, addr dwBytesWritten

Du schreibst anscheinend den Dateinamen der DLL einfach in den fremden Prozess

Das hat schon seinen Sinn. Es wird ein neuer Thread im Prozess mit der Startaddresse kernel32.LoadLibraryA gestartet und als Parameter eben dieser Dllname übergeben.
 
Ok, danke auf jeden Fall.
Doch:
Ich habe nun als DLL ws32_2.dll genommen.
Dann habe ich selbige versucht in Notepad zu injizieren: Kein Fehler, er sagt mir bloß das alles ok ist.
Öffne ich dann jedoch den Process Explorer und gucke nach, sehe ich, das kein neuer Thread in notepad.exe offen ist. Wieso?
 
Original von _SharK_
Ok, danke auf jeden Fall.
Doch:
Ich habe nun als DLL ws32_2.dll genommen.
Dann habe ich selbige versucht in Notepad zu injizieren: Kein Fehler, er sagt mir bloß das alles ok ist.
Öffne ich dann jedoch den Process Explorer und gucke nach, sehe ich, das kein neuer Thread in notepad.exe offen ist. Wieso?

Das laden einer DLL dauert nicht sehr lange, daher existiert der Thread nur sehr kurz. Du könntest mal bei den geladenen Modulen nachschauen, um zu sehen, ob es funktioniert hat.
 
Also bei mir funktioniert der Code nun.(Ich habe ws2_32.dll in einen Notepad-Prozess laden lassen).
Funktioniert es bei dir nur mit deiner Dll nicht oder auch mit anderen(ws2_32.dll zum Beispiel)?
 
Mit allen.
Frage:
Muss man evtl. irgendwelche Compilerparameter beachten? Ich habe eine Compilerbat in der steht:

@echo off
\masm32\bin\ml /c /coff \masm32\Projects\dllinj.asm
\masm32\bin\link /subsystem:windows dllinj
del dllinj.obj
pause
 
Zurück
Oben