AGB  ·  Datenschutz  ·  Impressum  







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

DLL-Injection klappt nicht

Ein Thema von Lyan · begonnen am 31. Okt 2012 · letzter Beitrag vom 14. Nov 2013
Antwort Antwort
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#1

DLL-Injection klappt nicht

  Alt 31. Okt 2012, 04:51
Delphi-Version: 7
Hallo,

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const Pfad = 'C:\temp\test.dll';
var
  h : HWND;
  r, hProc, Fehler : DWORD;
  pVAE : Pointer;
begin
  h := FindWindow(nil,PAnsiChar('Unbenannt - Editor'));
  GetWindowThreadProcessId(h,@r);
  hProc := OpenProcess(PROCESS_ALL_ACCESS,false,r);
  pVAE := VirtualAllocEx(hProc,nil,length(Pfad)+1,MEM_COMMIT OR MEM_RESERVE,PAGE_READWRITE);
  WriteProcessMemory(hProc,pVAE,Pchar(Pfad),length(Pfad)+1,Fehler);
  CreateRemoteThread(hProc,nil,0,getprocaddress(loadlibrary('kernel32.dll'),'LoadLibraryA'),pVAE,0,Fehler);
end;
wäre für Denkanstöße, warum es so nicht funktioniert sehr dankbar!

Vlt. verstehe ich auch etwas falsch:
also habe mal ganz easy mit findwindow "h" das handle von notepad zugewiesen, dann in "r" die Processid gespeichert... hProc das Handle des Prozesses zugewiesen. Dann mit VirtualAllocEx Speicher für den String "C:\temp\test.dll" alloziert und mit WriteProcessMemory dann den String reingeschrieben.

Und ja, dann CreateRemoteTherad das handle von OpenProcess wieder geben,
Code:
"A pointer to the application-defined function of type LPTHREAD_START_ROUTINE to be executed by the thread and represents the starting address of the thread in the remote process. The function must exist in the remote process. For more information, see ThreadProc."
deshalb GetProcAddress(loadlib) machen und halt eben den Pfad zur DLL...


Hilfe

Geändert von Lyan (31. Okt 2012 um 04:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: DLL-Injection klappt nicht

  Alt 31. Okt 2012, 05:52
Ich glaube nicht das notepad (Glaskugel meint das aufgrund des Fenstertitels) noch mit Ansi-Versionen der Win-API arbeitet.
Und unter Win64 ist notepad eine 64-Bit App in die du eine 32-Bit DLL nicht injekten kannst.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.123 Beiträge
 
Delphi 12 Athens
 
#3

AW: DLL-Injection klappt nicht

  Alt 31. Okt 2012, 11:33
Mit 64 Bit macht es eh Spaß.

Zum Schutz werden dort doch die BaseAdresses der DLLs zufällig vergeben, damit dort Viren und Co. weniger Schaden anrichten können ... mit der lokalen Adresse einer DLL wird man im anderem Prozess dann wohl nicht viel anfangen können, da diese dort vermutlich ganz wo anders liegt.


Und wie man immer wiedr sagen muß:
Werte endlich mal die Rückgabewerte der aufgerufenen Funktionen aus!
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: DLL-Injection klappt nicht

  Alt 31. Okt 2012, 13:13
Und wie man immer wiedr sagen muß:
Werte endlich mal die Rückgabewerte der aufgerufenen Funktionen aus!
Rückgabewerte/Fehlernummern ist nur was für Weicheier
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#5

AW: DLL-Injection klappt nicht

  Alt 31. Okt 2012, 19:10
Eventuell fehlt das Debug-Privileg um an den "fremden" Speicher zu kommen.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#6

AW: DLL-Injection klappt nicht

  Alt 14. Nov 2013, 19:37
Eventuell fehlt das Debug-Privileg um an den "fremden" Speicher zu kommen.
Ist zwar schon alter Käse, aber war mal grad am schauen was ich damals so für Fragen gestellt habe und bin hierauf gestoßen:

Es lag dummer- und logischerweise daran, dass notpad eine 64-bit app war.

Aber für alle die ähnliche Probleme haben:

Debug Privilege sind oftmals auch erforderlich, einfach mal hier schauen:

http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx


Lg

Geändert von Lyan (15. Nov 2013 um 14:08 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:31 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