AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Subclassing einer fremden Application, warum funzt das net ?
Thema durchsuchen
Ansicht
Themen-Optionen

Subclassing einer fremden Application, warum funzt das net ?

Ein Thema von stoxx · begonnen am 9. Nov 2003 · letzter Beitrag vom 5. Sep 2008
Antwort Antwort
Seite 2 von 7     12 34     Letzte »    
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#11

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 9. Nov 2003, 14:38
Du kannst auf die WndProc von Fenstern aus anderen Prozessen von deinem Prozessraum aus nicht zugreifen (nicht einmal lesen)! Aber selbst wenn du sie ändern könntest würde dir das nicht viel bringen, da deine neue WndProc in dem Adressraum deines Progs liegt, aber die Adresse deiner WndProc im Adressraum des anderen Prozesses nicht gültig ist! -> du musst den Code irgendwie in den anderen Adressraum bekommen - Stichwort: Inject-Dlls - ist aber ein recht heikles und kompliziertes Thema!
Manuel Pöter
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#12

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 9. Nov 2003, 14:40
[quote="Chewie"]IM PSDK klingt es so, als würde es unter Win9x gehen:

Zitat von PSDK:
GWL_WNDPROC
Sets a new address for the window procedure.

Windows NT/2000/XP: You cannot change this attribute if the window does not belong to the same process as the calling thread.
Für mich bedeutet das, dass das Subclassen fremder Fenster bei NTff nicht geht, wohl aber bei Win9x.

Hallo Chewie,

Du könntest Recht haben.

denn der Aufruf

OldWinProc := SetWindowLong(hWnd,GWL_WNDPROC,integer(@NewWinProc ));

liefert schon Null zurück.

ob man die Prozesse mit AttachThreadInput irgndwie verbinden kann ?
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#13

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 9. Nov 2003, 14:43
Zitat:
Geht schon, du musst aber Deinen Code (also zumindest die neue WndProc) in den Addressraum Deiner Zielanwendung injizieren.

hihi .. ich glaub das übersteigt im Moment meine Kenntnisse ..
hast Du sowas schonmal gemacht ? .. oder war das nur eine Idee wie es gehen könnte und Du das nur irgendwo gehört hast ?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 9. Nov 2003, 14:47
http://www.luckie-online.de/tutorials/assarbad/
Das Hook-Tutorial, da geht es auch um IPC und Inject DLL's.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#15

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 9. Nov 2003, 15:06
Es müsste auch über shared Speicher funktionieren. Man alloziert also einen Speicherbereich oberhalb $80000000, also mit CreateFileMapping(). Dann kopiert man seinen Fensterprocedure code da rein. Und arbeitet mit SetWindowLong(). Ob nun NT abbrüft ob SetWindowLong() die entsprechenden Privilegien benötigt weis ich aber nicht.

Gruß Hagen
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 9. Nov 2003, 15:19
Zitat von negaH:
Ob nun NT abbrüft ob SetWindowLong() die entsprechenden Privilegien benötigt weis ich aber nicht.
Meiner Ansicht nach, ja:
Zitat:
Windows NT/2000/XP: You cannot change this attribute if the window does not belong to the same process as the calling thread.
Es geht also (zunächst) gar nicht darum, ob der fremde Prozess jetzt auf die neue WndProc zugreifen kann oder nicht, sondern darum, ob man das Attribut "Fensterprozedur" eines Fenster ändern kann - und laut dieser Aussage darf man das nicht.

Bleibt halt: Aufruf von SetWindowLong via DLL-Inject in dem fremden Prozess rein und die WndProc in eine MMF auslagern, damit beide Prozesse Zugriff drauf haben.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#17

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 9. Nov 2003, 15:25
Zitat von negaH:
Man alloziert also einen Speicherbereich oberhalb $80000000, also mit CreateFileMapping(). Dann kopiert man seinen Fensterprocedure code da rein.
Klingt einfach. Es fehlt aber eine entscheidende Kleinigkeit: Wo kommt die Delphi RTL her, die von der injezierten WndProc aufgerufen wird?

Eine gute Lektüre zu dem Thema gibt es hier
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#18

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 9. Nov 2003, 15:30
Hallo halli, dies ist ein ernsthaftes Sicherheitsloch. Ich bin zwar nicht stoxx, aber ist ja auch egal ... er hat mich gebeten hier mal zu antworten und offensichtlich den Link inklusive der SessionID reinkopiert. Jetzt schreibe ich als er. Und jetzt ratet mal wer ich bin

Wärbunk: http://assarbad.info

Vielleicht solltet ihr (i.e. Daniel und Gerome) das nochmal überprüfen

Bis zur Antwort aus meinem Kontext verbleibe ich ... Assa
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#19

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 9. Nov 2003, 15:36
Jaja, "cannot change" ist uns als DLL ja pupegal, da wir ja zu JEDEM Prozess gehören in dem wir laufen. Außerdem wissen wir schonmal, daß der Zielprozeß ein Fenster besitzt. Wie bringen wie also unsere DLL in den fremden Prozeß? Na? Dreimal dürft ihr raten!

Ein Fensterhook, na klar ... und schwupp ist unsere DLL in jeder Anwendung drin die ein Fenster hat.

Naja und der Rest ist bekanntlich Formsache. Also, nicht rumlamentieren ... weitermachen *g*

@stoxx, nix für ungut. Sorry für das schreiben in deinem Kontext. Das ging offensichtlich, weil du mir einen Link inklusive aktiver SessionID geschickt hast. Habe die Mods bereits unterrichtet.

Zusammengefaßt: Hagen schlug vor, die Fensterproc in den Bereich zu legen, in dem auch MMFs liegen.
@Hagen: Deine Idee ist tatsächlich nicht so abwegig. Aber wie bringst du das dem Delphi-Linker bei?

@jbg: Mit dem Zeugs von madshi wäre ich vorsichtig ... :-/ ... zumindest vor einiger Zeit funktionierte das nicht so, daß ich es in einem Programm in einer Produktivumgebung nutzen würde!
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#20

Re: Subclassing einer fremden Application, warum funzt das n

  Alt 9. Nov 2003, 15:45
Hier mal ein paar Links um eine DLL zu injecten:

Inject DLL by Aphex (works under 95/98/NT/2K/XP) + Beispiel 1, Beispiel 2

Inject DLL using Madshi components by Kaiser

Elirt 1.01
(VirtualAllocEx, VirtualFreeExe, OpenThread and CreateRemoteThread for Windows 95,98,ME,NT,2000,XP,2003)

Inject DLL by Rezmond
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 7     12 34     Letzte »    


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 04:20 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