[Python-de] Semi-OT: Wie man DDE bricht

Gerson Kurz Gerson.Kurz at t-online.de
Don Jul 3 21:09:16 EDT 2003


Nicht, daß jemand da draussen denkt, ich sei ein Freund von Windows, möchte
ich das Ergebnis des heutigen Arbeitstages vorstellen, inkl. eines 3-Zeilen
Pythonprogramms, welches die komplette DDE-Kommunikation von Windows
lahmlegen kann.

TADA...

Gehst du zu C:\python22\Lib\site-packages\win32\Demos\dde
Startest du ddeserver.py
Startest du ddeclient.py
Wunderbar, ddeclient spricht mit ddeserver.

Erzeugst du eine Datei breakdde.py (wer seinem VI hinterhertrauert, darf
gerne im Komfort von EDLIN schwelgen), in der folgendes steht:

import time, win32gui
win32gui.CreateWindowEx(0,"EDIT","",0,0,0,0,0,0,0,0,None)
time.sleep(6000)

Jetzt startest du die Programme (achtung, die Reihenfolge ist wichtig!)

ddeserver.py
breakdde.py
ddeclient.py

- oha! DDE Client kann nicht mehr mit dem Server reden! Die Ursache findest
du hier

http://support.microsoft.com/support/kb/articles/q136/2/18.asp

Man beachte die Unverfrorenheit! Die Chuzpe! Du kannst die Kommunikation
zwischen zwei externen Prozessen lahmlegen, indem du in deinem Prozess
einfach dich selbst schlafen legst (und vorher ein "toplevel" Fenster
angelegt hast. "Toplevel" Fenster anzulegen ist, wie obiges Beispiel zeigt,
eine Trivialität reinsten Grades.). Microsoft gibt zu, daß das ein Problem
in seinen Produkten ist, und empfiehlt dir ---- DEIN Programm zu ändern.

Wahrlich toll ists', solche Fehler suchen (und finden) zu dürfen.

Gib als Zugabe ein komplexes System das ein Windowmessagebasiertes
Microsoft-API bedient, ein externes Programm das DDE benutzt und somit
hängt, wenn beide am gleichen System laufen, sowie ein "SPY++"-Produkt,
welches die Macht hat, jeden Rechner in die Knie zu zwingen - es fehlte
nicht viel und ich wäre reumütig zu hjkl zurückgekehrt. (Ganz gereicht hat
es dann allerdings doch nicht).