Windows Fenster Spionage mit Spy++

Spy++ Title

Nichts Neues, Windows kommuniziert mit den Fenstern. Aber – was sind das für Fenster ? Wie heissen sie ? Welche Nachrichten schickt Windows an die einzelnen Fenster ? Um das herauszubekommen benötigen wir einen Windows Spy !

Spy++ ist die Lösung von Microsoft

Windows Spys finden sich einige auf dem Markt. Spy++  ist eines davon. Aber, es stammt direkt von Microsoft und liegt dem Visual Studio bei.

Grundlagen zur Windows Fenstertechnik ?

 So funktionieren Windows in Windows

Praxis: Fenster im Eigenbau

Los geht’s !

Spy++ Start

Wir starten Spy++ und landen im Fenster Modus. Alle Fenster, die Spy auf unserem Desktop gefunden hat, werden hier sauber aufgelistet.

Spy++ Fenster Ansicht

Und geich fallen einige spannende Dinge auf:

  • Der Desktop ist selbst auch „nur“ ein Fenster, das Root Fenster aller anderen Fenster
  • Steuerelemente sind ebenfalls Fenster
  • Auch der Desktop ist aus „üblichen“ Steuerelementen aufgebaut

Zumindest konsequent und ohne Tricks !

Die Fenster Ansicht ist interessant, aber man verliert schnell den Überblick. Darum bietet Spy++ unterschiedliche Ansichten an.

Spy++ Prozess Ansicht

Spy++ Process

Will man sich die Fenster und Steuerelemente eines Prozesses ansehen, dann ist die Prozess Ansicht optimal.

Hier werden die laufenden Prozesse und deren Threads aufgelistet. Nicht jeder Thread ist GUI enabled ! Daher findet sich nicht zu jedem Prozess / Thread ein Fenster.

Spy++ Thread Ansicht

Diese Ansicht zeigt die einzelnen Threads in einer langen Liste. Recht unübersichtlich !

Spy++ Suche

Die komfortabelste Ansicht.

Spy++ Find

Sehr intuitiv ! Man schnappt sich einfach mit der Maus das Fadenkreuz und lässt es auf dem gewünschten Fenster / Steuerelement fallen. Spy++ zeigt uns dann die Eigenschaften des Fensters.

Spy++ Properties

Fenster / Steuerelemente Eigenschaften

General

  • Window Caption: Titel des Fensters. Wird oft verwendet um gezielt Nachrichten an das Fenster zu schicken.
  • Window Handle: Handle des Fensters. Wird für den Zugriff auf das Fenster benötigt.
  • Window Proc: Fenster Prozedur
  • Diverse andere Handles und Informationen.

Styles

In diesem Tab finden sich die gesetzten Styles und extended Styles. Diese bestimmen Eigenschaft, Aussehen und Interaktion des Fensters.

Windows

Hier wird die Hirarchie des Fensters angezeigt. Parent, vorheriges, nächstes, …

Class

Die Fenster Klasse. Diese bestimmt, um welche Art von Fenster oder Steuerelement es sich handelt.

  • Dialog
  • Button
  • Listview
  • Static

Zudem zeigt Spy++ noch weitere Informationen wie: Window Prozedur, Instance, Menu, Cursor, Bg Brush, …

Process

Unter diesem Tab zeigt Spy++ die Prozess und Thread ID an, zu dem das Fenster gehört. Klickt man auf eine  ID erhält man weitere Informationen zum Prozess / Thread.

Beispiel: Class / Style

Die Klasse definiert das Steuerelement ( Control ), der Style hingegen bestimmt das Aussehen und die Art des Controls.

Class: Button

Die Klasse ist der „Button„. Allerdings kennt Windows einige unterschiedliche Buttons. Dies wird anhand des Styles festgelegt.

Class: Button

Style: BS_PUSHBUTTON

style_push

Class: Button

Style: BS_AUTOCHECKBOX

style_check

Class: Button

Style: BS_AUTORADIOBUTTON

style_radio1

Windows Nachrichten abhorchen

Das ist das eigentliche Haupteinsatzgebiet von Spy++. Mithorchen welche Nachrichten an die einzelnen Fenster geschickt werden.

Menu -> Log Messages, oder Menü -> Meldungen protokollieren

Spy++ Logging

Nun können definieren, was wir genau mitloggen möchten. Neugierige können ja mal alle Messages ungefiltert beobachten …

In der Regel ist das Nachrichten Feuerwerk aber viel zu viel des Guten. Spy++ erlaubt es uns daher, sehr genau einzugrenzen was wir sehen möchten.

Fenster / Control

Komfortabel können wir das Fenster mit dem  Finder Tool auswählen.

Spy++ Logging Options

Im Demo habe ich hier nur einen einzelnen Button des Dialogs ausgewählt.

Messages

Spy++ Logging Messages

In diesem Dialog bestimmen wir, welche Messages wir mitloggen möchten. Entweder einzelne Messages oder Messages einer Klasse die zu einer Gruppe zusammengefasst wurde.

Im Demo habe ich „Linke Maustaste gedrückt“ ausgewählt.

Output

Spy++ Logging Output

Nun bestimmen wir das Ausgabe Format.

Im Demo möchte ich noch zusätzliche Details zu den Parametern sehen.

Bingo !!

Fenster verschoben, anderer Button gedrückt … keine Meldung …

Spy++ Logging Result

Erst wenn der definierte Button mit der linken Maustaste gedrückt wird, erscheint die Message inklusive Parameter im Ausgabefenster.

Wie funktioniert Spy ++ ?

Pat Brenner, der Spy++ wesentlich programmierte, beschreibt dies kurz in seinem Blog.

Spy++ installiert 3 globale Hooks, die per Hook Dll in die Prozessräume geladen werden.

WH_GETMESSAGE

Hooked Messages die via PostMessage an ein Fenster geschickt werden.

WH_CALLWNDPROC

Hooked  Messages die via SendMessage an ein Fenster versendet werden.

WH_CALLWNDPROCRET

Hooked das Ergebnis von SendMessage Calls.

 Blog: Pat Brenner

Dateien

Aktuell besteht Spy aus den folgenden Dateien:

32 Bit

  • spyxx.chm
  • spyxx.exe
  • spyxxhk.dll

64 Bit

  • spyxxhk_amd64.dll
  • spyxx_amd64.chm
  • spyxx_amd64.exe

Und diversen mfc und msvc Runtime Libs.

Spy++ findet das Steuerelement nicht …

Spy++ kann nur Steuerelemente auflisten die mit der Windows Api erzeugt wurden. Manche Programme verwenden eigene „skinned“ Controls, die nicht von der Windows Api verwaltet werden. Auch Windows Store Apps verwenden nicht die klassische Windows Api.

Immer auf dem Laufenden !
Liken Sie uns jetzt auf Facebook
Keinen Artikel verpassen !
Folgen Sie uns jetzt auf Twitter

Fanden Sie den Artikel interessant ? Dann empfehlen Sie ihn doch gleich weiter !

Sagen Sie uns Ihre Meinung !

Happy new year 2016 !
Happy New Year 2016 !
Google Tips
Die besten Google Tipps, Hacks, Games und Easter Eggs !
Registry Quiz
Sind Sie ein Windows Registry Experte ?
Coder Myths
14 hartnäckige Programmier(er) Mythen und Irrtümer
Password Sünden / Password Sins
13 gefährliche Passwort Sünden
Passwort Generator / password generator
Online Passwort Generator
Password Hacker
Passwort Hacker – Wie kommen Hacker an Ihre Passwörter ?
Leet
Leet – die Hacker Sprache
Spy++ Title
Windows Fenster Spionage mit Spy++
Registry Quiz
Sind Sie ein Windows Registry Experte ?
Title ProcMon
Prozess Monitor – Programmen auf die Finger geschaut !
Windows Construct
Fenster im Eigenbau !
Coder Myths
14 hartnäckige Programmier(er) Mythen und Irrtümer
Windows Construct
Fenster im Eigenbau !
Debug Messages
Programmierer Geflüster abhorchen
Registry timestamp / Registry Zeitstempel
Registry Keys haben einen Zeitstempel ?!
Title ProcMon
Prozess Monitor – Programmen auf die Finger geschaut !
WMI Code Creator
WMI Code Creator – WMI ganz komfortabel
Environment Variables / Umgebungs Variablen
Windows konfigurieren mit Umgebungsvariablen
Passwort Generator / password generator
Online Passwort Generator