AGB  ·  Datenschutz  ·  Impressum  







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

Hook aus Service

Ein Thema von hesch21 · begonnen am 15. Mai 2012 · letzter Beitrag vom 29. Mai 2012
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Zacherl
Zacherl

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

AW: Hook aus Service

  Alt 16. Mai 2012, 18:31
Versuch mal deine Hook DLL per AppInit_DLL zu registrieren. Damit sollte sie eigentlich auf allen Desktops geladen werden.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Hook aus Service

  Alt 16. Mai 2012, 20:19
Also irgendwie gefällt mir dein Sicherheitskonzept nicht wirklich. Wenn man solche Klimmzüge machen muss, habe ich den Verdacht, als wenn du irgendwas falsch machst. Bei mir ist es so, wenn eine Lösung zwar funktioniert aber nicht schön und einfach ist, dann ist irgendwas falsch.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#13

AW: Hook aus Service

  Alt 22. Mai 2012, 09:23
So, nach längerem Üben melde ich mich zurück.
@ Zacherl: Danke für Deinen Tipp. Ich habe das mit APP_INIT nicht gekannt und über einen halben Tag investiert, um herauszufinden, um was es sich da handelt. Wenn ich es richtig begriffen habe, definiert man so eine Art von 'Service'-DLL, die dauernd geladen ist. Wohl deshalb kann man sie auch nicht mehr dynamisch mit LoadLibrary laden. Statisch geht und der Hook-EntryPoint kann ich auch ansteuern, nur der Hook scheint nicht aktiviert zu werden. Habe so ziemlich alles versucht, aber ich bekomme nie ein CallBack-Event. Habe deshalb diesen Ansatz wieder fallen gelassen.

@ Luckie: Lieber Michael, ich bewundere Dein enormes Wissen und Dein Engagement in diesem Forum. Ich habe auch bereits etliche Routinen von Dir angewandt, z.B. jene für die Kontrolle eines Service. Siehe weiter unten. Aber glaube mir, seit dem Erscheinen von Vista und dem Wegfall der GINA bin ich auf der Suche nach einer vernünftigen Lösung dafür, wie man über eine Tastenkombination einen Alarm auslösen kann, und zwar in jedem 'Zustand' (sprich Desktop) des Rechners. Die aktuelle Lösung über den KeyboardFilterDriver ist einfach unbefriedigend (du kannst Dir z.B. die Klimmzüge ausmalen, um das Ding vor den Antivirus-Programmen zu verbergen). Und ausserdem weiss ich einfach, dass es geht. Ich habe eine Testversion eines Konkurrenzproduktes im Haus und die können das (ohne KBFD). Der langen Rede kurzer Sinn. Bitte entschuldige, wenn ich unter diesen Umständen auf gewisse Art von Kritik ohne kontruktive Lösungsvorschläge etwas unwillig reagiere.

Stand der Dinge: Ich bin dann auf die Idee gekommen, ich könnte mit zwei Diensten arbeiten. Ein kleiner Dienst, welcher bloss den Hook lädt oder entlädt. Dann logischerweise die Hook-DLL welche über Pipe direkt mit dem Haupt-Service kommuniziert. Dieser Hauptservice kontrolliert über einen Timer periodisch, ob der Desktop gewechselt hat. Wenn ja, beendet er den kleinen Service und startet ihn neu.
Das ganze funktioniert unter XP super. Unter W-7 bekomme ich aber auf dem SetWindowsHookEx einen Fehler zurück LastError = Falscher Parameter. Da stehe ich nun wieder an!

Apropos Service aus Service beenden und neu starten. Wie gesagt, da verwende ich die Routinen von Luckie und würde anregen, die Funktionen noch mit einem Ext.. zu ergänzen. Vor allem die StartService ist innerhalb eines Service meist schon vorhanden. Und ein kleiner Schönheitsfehler: Der Status bei Fehler (z.B. falschem Namen) ist nicht -1 sondern 0.
Heinz Schneider
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

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

AW: Hook aus Service

  Alt 22. Mai 2012, 12:28
Du müsstest bei der AppInit Methode dann beispielsweise mit inline Hooks auf GetMessage / PeekMessage arbeiten. Denke mal da versagt einfach das SetWindowHookEx. Über die genannten APIs geht es auf jeden Fall. Das habe ich mal benutzt um eine DirectX GUI in ein vorhandenes Programm zu integrieren und dann Maus und Tastatureingaben abgefangen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#15

AW: Hook aus Service

  Alt 29. Mai 2012, 12:55
So, jetzt habe ich die Lösung (mit einem kleinen Schönheitsfehler, für den ich einen separaten Thread eröffne).
Allerdings möchte ich nicht gerade alle Details hier breit schlagen, wäre das doch schon fast eine Einladung für die Erstellung eines ziemlich guten Keyloggers und Spyware auf jeder Desktop-Ebene.
Das Prinzip ist das, dass ein Service auf den gerade aktiven Desktop ein kleines verstecktes Programm lanciert. Dieses wiederum hookt die Tastatur und meldet die Tastenkombinationen an den Service per Pipe. Ebenfalls überprüft das Programm periodisch, ob immer noch derselbe Desktop aktiv ist. Wenn nicht, wird der neue Desktop ebenfalls per Pipe an den Service gemeldet und das Programm beendet sich. Und nun beginnt das Spiel von vorne: Der Service lanciert das Programm wieder auf dem neuen Desktop ....

Was ich Eingangs betreffend Schönheitsfehler gemeint habe, ist, dass ich nicht schaffe, den Screen-saver - Desktop zu 'hooken'.

Danke für alle Eure Anregungen

Heinz
Heinz Schneider
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:58 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