![]() |
dll-injection
Hallo Leute,
ich versuch momentan ne dll zu injecten wenn ich die mit der uall collection injecte startet die dll, wenn ich versuche die dll mit einer anderen Funktion zu injecten passiert nix. die hab ich probiert: ![]() ![]() Beide scheinen wohl zu injecten nur bei starten der dll gibts wohl irgendwie Probleme, ich vermute das Problem daher in der CreateRemoteThread bzw CreateRemoteThreadX. mfG FLaSH |
Re: dll-injection
Moin,
mit etwas mehr Informationen kann man dir vll. helfen... aber so ohne Code und wissen um was für eine DLL es dabei geht wird das leider nix... :-) |
Re: dll-injection
Hallo,
Zitat:
Grüsse Rainer |
Re: dll-injection
Also ich hab mir ne dll geschrieben die ich versuche zu injecten.
Die läst sich mit der uall collection prima injecten. -function InjectLibrary(dwProcessID: DWord; pLibraryName: PChar): Boolean; stdcall; ![]() wenn ich nun mit eine andere Prozedur versuche zu injecten dann startet die dll nicht
Delphi-Quellcode:
da scheint irgendwas zu fehlen , die funktion wird fehlerfrei durchgeführt
procedure InjectDll(PID: dword; DLL: pChar);
var BytesWritten, hProcess, hThread, TID: Cardinal; Parameters: pointer; pThreadStartRoutine: Pointer; begin hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, PID); Parameters := VirtualAllocEx( hProcess, nil, Length(DLL), MEM_COMMIT, PAGE_READWRITE); WriteProcessMemory(hProcess,Parameters,Pointer(DLL),Length(DLL),BytesWritten); pThreadStartRoutine := GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 'LoadLibraryA'); hThread := CreateRemoteThread(Process, nil, 0, pThreadStartRoutine, Parameters, 0, TID); CloseHandle(hProcess); end; zur dll ist ne einfach dialog dll:
Delphi-Quellcode:
library injectdll;
uses SysUtils, Dialogs, Classes,Windows; {$R *.RES} begin ShowMessage('blub'); end. |
Re: dll-injection
ich würde mal sagen, dass deiner DLL die Export-Declaration(en) fehlen.
|
Re: dll-injection
ja gut wenn ich die dll normal benutzen würde müste ich das machen aber zum injecten braucht man das wohl nicht
mit uallhook gehts ![]() |
Re: dll-injection
So hab noch mal bischen rumgeguckt also ich hab noch gesehen das man privilegien setzen kann,um in fremde Prozesse zu injecten.
gut das hab ich gemacht aber starten tut da immernoch nichts. Wird noch was benötigt damit ein Thread mit der Dll startet ? |
Re: dll-injection
Ich verstehe nicht?
Die uallcollection hast du doch samt Source oder nicht? Schau dort doch mal nach? |
Re: dll-injection
Ja, die uall collection ist mit Source , ich wollte aber eigentlich ne eigene funktion nehmen damit ich auch nachvollziehen kann wie das geht.
Nun hab ich 2 Delphi Seiten (leider nicht de) und ne Wiki Page(nur c++) gefunden die beschreiben wie man ne dll injection macht und die machen das kürzer/bischen anders als bei uall. Nur wie gesagt das will alles nicht richtig laufen :wall: |
Re: dll-injection
Eine DLL-Injizierung ist wirklich nicht schwer. Du musst lediglich den Zielprozess veranlassen,
die DLL zu laden. Mit der API CreateRemoteThread können wir einen Thread in einem Zielprozess starten. Du musst also einen Thread für LoadLibraryA erstellen. Den Pfad zur DLL Datei, welchen ja LoadLibraryA braucht, musst du als Parameter beim Aufruf von CreateRemoteThread übergeben. Du allozierst also einfach einen "zufälligen" Speicherbereich. In diesen speicherst du den Pfad zur DLL Datei. Den Zeiger zur Adresse des Speicherbereichs, sowie die Addresse zu LoadLibraryA (einfach mit GetProcAddress die Adresse holen) übergibst du dann an CreateRemoteThread.
Delphi-Quellcode:
1. Mit OpenProcess eine Verbindung zum Zielprozess erstellen.
CreateRemoteThread(
hProcess: Cardinal; //Handle zum Zielprozess lpThreadAttributes: Pointer; dwStackSize: Cardinal; lpStartAddress: Pointer; //Adresse von LoadLibraryA lpParameter: Pointer; //Adresse zum allozierten Speicherbereich dwCreationFlags: Cardinal; var lpThreadId: Cardinal );stdcall; 2. Einen Speicherbereich im Kontext des Zielprozesses allozieren. 3. In den Speicherbereich den Pfad zur DLL Datei mit WriteProcessMemory schreiben. 4. Per CreateRemoteThread einen Thread für LoadLibraryA erstellen. 5. Das Handle zum Zielprozess mit CloseHandle wieder schliessen. Ich hoffe, ich konnte dir helfen. Postskriptum: Falls du eine ausführlichere Beschreibung lesen willst: ![]() MfG: sk0r |
Re: dll-injection
thx arbeite ich heut abend durch :bounce1:
|
Re: dll-injection
Liste der Anhänge anzeigen (Anzahl: 1)
Hi ,so hab mich noch paar mal damit beschäftigt aber schaffe es nicht in fremde Prozesse zu injecten.
In sich selbst ist kein Problem. :? Hat jemand lust sich das mal anzugucken? Hab das ganze mal gepackt und angehangen. Als Prozess hab ich Teamspeak2 angegeben. |
Re: dll-injection
Dein Injector weist Teamspeak nur an, Die Adresse von LoadLibraryA zu holen. Das wars. Die Parameter werden ignoriert.
Du musst schon eine ganze Prozedur injezieren, die deine DLL lädt. Und das kann sie auch nur tun, wenn sie die Addressen zu LoadLibrary und GetProcAddress übermittelt bekommt. Schau ma hier: ![]() |
Re: dll-injection
KDR zu niedrig?
|
Re: dll-injection
@Neotracer64
thx, aber warum hat sk0r das in seinem Tutorial nicht machen müssen als er das in hl injected hat @Sergej :?: |
Re: dll-injection
auch wenns zu spät sein sollte:
Delphi-Quellcode:
und gib den kompletten Pfad der DLL an!
procedure InjectDll(PID: dword; DLL: pChar);
var BytesWritten, hProcess, hThread, TID: Cardinal; Parameters: pointer; pThreadStartRoutine: Pointer; begin hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, PID); Parameters := VirtualAllocEx( hProcess, nil, Length(DLL)[u]+1[/u], MEM_COMMIT[u] or MEM_RESERVE[/u], PAGE_READWRITE); WriteProcessMemory(hProcess,Parameters,Pointer(DLL),Length(DLL)[u]+1[/u],BytesWritten); pThreadStartRoutine := GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 'LoadLibraryA'); hThread := CreateRemoteThread([u]h[/u]Process, nil, 0, pThreadStartRoutine, Parameters, 0, TID); CloseHandle(hProcess); end; |
Re: dll-injection
Liste der Anhänge anzeigen (Anzahl: 1)
ein beispiel im anhang das sehr anschaulich ist:
hier entnommen: ![]() mfg smallsmoker |
Re: dll-injection
Ach der Thread war ja nur 5 Monate alt :mrgreen: Naja vielleicht hilfts noch jemandem, obwohl die bereits genannte uallCollection ja auch eine sehr einfache DLL Injection erlaubt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz