AGB  ·  Datenschutz  ·  Impressum  







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

SendMessage aus Services

Ein Thema von Chewie · begonnen am 18. Aug 2003 · letzter Beitrag vom 19. Aug 2003
Antwort Antwort
Chewie

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

SendMessage aus Services

  Alt 18. Aug 2003, 20:50
Wieso kann ich eigentlich aus einem NT-Service keine Windows Messages an andere Fenster schicken? Ich habe testweise versucht, einen Broadcast von WM_COPYDATA aus einem Service zu schicken, welcher ein Programm dann auffängt. Das klappt aus "normalen" Anwendungen heraus, aber nicht aus einem Service.
Meine Frage deshalb: Klappt das prinzipiell schon nicht oder muss ich bei SendMessage aus einem Service etwas besonderes beachten? Der Hintergrund ist der, dass ich per ControlService einen benutzerdefinierten ControlRequest an den Service schicke, woraufhin dieser dem Programm, dass den Request abgeschickt hat, etwas zurückschicken soll. Im Notfall muss ich dann eben doch Mailslots, MMFs oder Pipes benutzen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: SendMessage aus Services

  Alt 19. Aug 2003, 01:28
Versuch mal PostMessage.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#3

Re: SendMessage aus Services

  Alt 19. Aug 2003, 13:01
@Luckie: Erinerst du dich noch an Sonntag??? Was habe ich gesagt??? Messages, Handles etc nur Sessionweit!

Da Services in einer anderen WindowStation laufen, wirst du keine Chance haben das so zu machen. Nimm einen anderen IPC-Mechanismus. Beschreibungen findest du unter anderem in meinem Hooktutorial.

http://assarbad.net/stuff/tutorials/

NB: Bestimmte Nachrichten gehen simpel nicht mit Postmessage (WM_COPYDATA gehoert dazu!): "To send this message, call the SendMessage function as follows."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: SendMessage aus Services

  Alt 19. Aug 2003, 13:06
Mist. Ja stimmt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

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

Re: SendMessage aus Services

  Alt 19. Aug 2003, 13:25
Wenn sich der Thread "impersonated" könnte man auch SendMessage verwenden (is nicht ganz simpel), aber wie Assarbad schon sagte wäre eine andere IPC Wahl eher angebracht:

COM/DCOM
Pipes
Sockets
MMFs
Manuel Pöter
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#6

Re: SendMessage aus Services

  Alt 19. Aug 2003, 13:42
@Motzi: Da blick ich nicht durch? Impersonated heisst immer noch nicht, dass der Service aus seiner WindowStation raus kann!
Wenn beispielsweise der Service mit Administrator-Credentials gestartet wird, wird eine eigene Logon-Session angelegt und fuer den Service eine WindowStation mit der Hex-Repraesentation der LogonSessionID.

Das hat aber nix mit WinSta0 und dem Default-Desktop zu tun ... um Zugrff auf die zu erhalten muss man die DACLs anpassen. Aber IMO wird das auch nicht ermoeglichen SendMessage zu benutzen. Einzige Chance koennte sein den Service interaktiv zu starten, was aber wieder Angriffspunkt fuer Shatter-Attack und andere aehnliche Angriffe bietet

Ich sehe also keine praktikable Moeglichkeit ausser eben einer anderen IPC-Methode.

@Motzi: Wollen wir mal gemeinsam ein Tut schreiben? *g*
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

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

Re: SendMessage aus Services

  Alt 19. Aug 2003, 13:50
Naja, aber ein Thread kann durch impersonation einen Dialog (o.ä.) auf WinSta0 anzeigen, also würd ich sagen hat man möglicherweise auch ganz gute Chancen mit SendMessage Messages an Fenster in WinSta0 zu schicken (sag ich jetzt einfach mal so hab momentan kein Möglichkeit das nachzuprüfen).

Zitat von Assarbad:
@Motzi: Wollen wir mal gemeinsam ein Tut schreiben? *g*
Könnten wir mal machen! 8) Wollt mich sowieso auch praktisch noch ein bisschen mehr in dieses Themengebiet einarbeiten!
Manuel Pöter
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#8

Re: SendMessage aus Services

  Alt 19. Aug 2003, 13:55
Gut, von dem Dialog aus (oder bei als interaktiv laufenden Services) geht es ... keine Frage. Ist ein Fenster auf einer bestimmten WindowStation und ist der Desktop des aktuellen Threads gesetzt, geht es *g*

Aber interaktive Services sind seit Shatter ganz schoen aus der MOde gekommen.
  Mit Zitat antworten Zitat
Chewie

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

Re: SendMessage aus Services

  Alt 19. Aug 2003, 18:43
Danke für die Antworten. Dann werd ich wohl doch Pipes verwenden, auch wenns mit WM_COPYDATA so schön einfach gewesen wäre, denn da muss ich mir keinen Eventhandler selber basteln.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  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 20:24 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