AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL-Injection mit Freelibrary

Ein Thema von Wotan89 · begonnen am 27. Nov 2007 · letzter Beitrag vom 10. Mär 2009
Antwort Antwort
Seite 2 von 3     12 3      
R4id
(Gast)

n/a Beiträge
 
#11

Re: DLL-Injection mit Freelibrary

  Alt 28. Nov 2007, 16:12
Mit der uallCollection kannst du die DLL auch injektieren.
  Mit Zitat antworten Zitat
Wotan89

Registriert seit: 20. Nov 2007
77 Beiträge
 
Delphi 2005 Personal
 
#12

Re: DLL-Injection mit Freelibrary

  Alt 28. Nov 2007, 16:58
Ich hab das Problem selbst gelöst und zwar hatte ich statt dem Threadhandle die Threadid genommen, naja Dummheit... Allerdings kann ich die DLL, welche injiziert wurde, trotzdewm nicht löschen. Und das geht auch bei dem spanischen Quelltext nicht. Erst wenn ich die Anwenung, in welche die DLL injiziert wurde, beende, kann ich sie wieder löschen... Ich vermute, dass Freelibrary nicht richtig ausgeführt wird, da bei meiner Button2-Procedure immer wieder die DLL gefunden wird, ein Thread wird jedoch "erstellt".
  Mit Zitat antworten Zitat
Wotan89

Registriert seit: 20. Nov 2007
77 Beiträge
 
Delphi 2005 Personal
 
#13

Re: DLL-Injection mit Freelibrary

  Alt 28. Nov 2007, 19:34
Hab noch nen kleinen Fehler bei mir entdeckt: Man darf die Adresse nicht mit WriteProcessMemory usw. in den Prozess reinschreiben, sondern dies reicht aus:createremotethread(hproc,nil,0,getprocaddress(getmodulehandle('kernel32.dll'),'FreeLibrary'),Pointer(hdll),0,TID); Dadurch kommt bei mir eine Frage auf! Wieso muss ich das Handle der DLL nicht in den Prozess hineinschreiben, wie den Namen der DLL beim Starten? Und warum funktioniert die Methode mit WriteProcessMemoy usw. nicht? Für mich ist dies irgendwie unlogisch...
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: DLL-Injection mit Freelibrary

  Alt 28. Nov 2007, 19:43
Ganz einfach: Das Pointer-Argument von CreateRemoteThread wird direkt an FreeLibrary übergeben. Und FreeLibrary kann mit einem Zeiger auf das Handle nichts anfangen, deshalb muss das Handle direkt, zum Zeiger gecastet, übergeben werden.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Wotan89

Registriert seit: 20. Nov 2007
77 Beiträge
 
Delphi 2005 Personal
 
#15

Re: DLL-Injection mit Freelibrary

  Alt 28. Nov 2007, 20:00
Wieso kann man der LoadlibraryA-Function den Stringwert nicht direkt übergeben, sondern muss ihn über WriteProcessMemory in den anderen Prozess schreiben. Ich glaube irgendeine Funtionalität habe ich noch nicht verstanden oder falsch "interpretiert".
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: DLL-Injection mit Freelibrary

  Alt 28. Nov 2007, 20:10
LoadLibrary erwartet als Parameter einen Zeiger auf einen Null-terminierten String, FreeLibrary erwartet einen HModule-Parameter.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: DLL-Injection mit Freelibrary

  Alt 28. Nov 2007, 23:24
Was waren nochmal die legitimen Anwendungsgebiete für DLL-Injection?
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Wotan89

Registriert seit: 20. Nov 2007
77 Beiträge
 
Delphi 2005 Personal
 
#18

Re: DLL-Injection mit Freelibrary

  Alt 29. Nov 2007, 18:39
LÖegitime Anwendungen wären z.B. fehlerhafte 16-Bit-Anwenungen wieder zu,m Laufen zu bringen oder der Compiler benutzt auch DLL-Injection. Ich brauch es lediglich zum Verbessern des Verständnis für Programmierung.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#19

Re: DLL-Injection mit Freelibrary

  Alt 29. Nov 2007, 20:20
Zitat von Dani:
Was waren nochmal die legitimen Anwendungsgebiete für DLL-Injection?
Ring3 Hooks, welche von allen möglichen Anwendungen verwendet werden. Als Beispiel nur mal Firewalls. Was wären denn die illegalen Anwendungsgebiete?
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#20

Re: DLL-Injection mit Freelibrary

  Alt 14. Jan 2008, 16:56
wenns auch schon sehr alt ist:

Delphi-Quellcode:
function InjectIntoProcess(lpProcessID: Cardinal; lpDllname: String): cardinal;
var
  hProc: Cardinal;
  hRemThread:cardinal;
  addr:pointer;
  cWPM: Cardinal;
  th: integer;
begin
  result := 0;
  SetLastError(ERROR_SUCCESS);
  hProc := OpenProcess(PROCESS_ALL_ACCESS, false, lpProcessID);
  addr:=VirtualAllocEx(hProc, nil, length(lpDllname)+1, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
  WriteProcessMemory(hProc, addr, PChar(lpDllName), length(lpDllName)+1, cWPM);
  th := CreateRemoteThread(hProc, nil, 0,GetProcaddress(getmodulehandle('kernel32.dll'),'LoadLibraryA') , addr, 0, hRemThread);
  if (th > 0) then
  begin
    // warten bis thread beendet (dll im fremden prozess geladen)
    WaitForSingleObject(th,INFINITE);
    // den exitcode bekommen = EAX register von LLA = baseadresse der dll = dllhandle
    GetExitCodeThread(th,result);
    closehandle(th);
    // dll wieder entladen
    th := createremotethread(hproc,nil,0,getprocaddress(getmodulehandle('kernel32.dll'),'FreeLibrary'),Pointer(result),0,hremthread);
    if (th > 0) then
      closehandle(th);
  end;
  CloseHandle(hProc);
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz