![]() |
Re: Subclassing einer fremden Application, warum funzt das n
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!
|
Re: Subclassing einer fremden Application, warum funzt das n
[quote="Chewie"]IM PSDK klingt es so, als würde es unter Win9x gehen:
Zitat:
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 ? |
Re: Subclassing einer fremden Application, warum funzt das n
Zitat:
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 ? |
Re: Subclassing einer fremden Application, warum funzt das n
![]() Das Hook-Tutorial, da geht es auch um IPC und Inject DLL's. |
Re: Subclassing einer fremden Application, warum funzt das n
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 |
Re: Subclassing einer fremden Application, warum funzt das n
Zitat:
Zitat:
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. |
Re: Subclassing einer fremden Application, warum funzt das n
Zitat:
Eine gute Lektüre zu dem Thema gibt es ![]() |
Re: Subclassing einer fremden Application, warum funzt das n
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: ![]() Vielleicht solltet ihr (i.e. Daniel und Gerome) das nochmal überprüfen ;) Bis zur Antwort aus meinem Kontext verbleibe ich ... Assa |
Re: Subclassing einer fremden Application, warum funzt das n
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! |
Re: Subclassing einer fremden Application, warum funzt das n
Hier mal ein paar Links um eine DLL zu injecten:
![]() ![]() ![]() Inject DLL using ![]() ![]() (VirtualAllocEx, VirtualFreeExe, OpenThread and CreateRemoteThread for Windows 95,98,ME,NT,2000,XP,2003) ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 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-2025 by Thomas Breitkreuz