Samstag, 4. Juni 2011

Programmierung: Möglichkeiten der Windows API erkunden und nutzen

Windows Application Programming Interface (API) wird bei Programmieren auch WinAPI genannt. Die Windows API ist eine Programmierschnittstelle und Laufzeitumgebung, welche Programmierern bereitsteht, um Anwendungsprogramme für Microsoft Windows-Betriebssysteme zu erstellen.

Es wäre aus Softwareentwickler wirklich nicht schön, wenn man unter der Programmiersprache Java,Python, VB, .NET die einzelnen Befehle sind Library (Laufzeitbibliotheken) *.dll untergebracht. Beim Zugriff auf die WinAPI wird zwischen User-Mode und Kernel-Mode  unterschieden. Lange Zeit sah Microsoft es nicht ein, die Windows API offen zur Verfügung zu stellen und wurde dafür vor Gericht unter anderem belangt.
Es fehlten und fehlen bis heute wahrscheinlich immer noch Betriebssystem Funktion! Das .NET Framework verhält sich wie andere Programmiersprachen auch und erzeugt Wrapper  um die API Funktionen, damit man die für die Sprache üblichen Befehle verwendet. Ein simples Windows Fenster kann CreateWindowEx erzeugt werden, die der Befehl z.B. bei Python aussieht kann sich unterscheiden!

Simple Analyse der Kernel32.dll


Im Bildschirmphoto kaum zu erkennen, aber innerhalb der Kernel32.dll befinden sich die Klartext Namen der einzelnen API Funktionen. In diesem Fall Kernel-Mode API Funktionen, welche natürlicherweise höhere Rechte erfordern. Weitere elementare Bestandteile der Windows API wären die gdi.dll, welches sich um die Grafische Darstellung von Objekten kümmert, dieser wird in naher Zukunft von WinFX ( Windows Presentation Foundation) abgelöst und setzt komplett auf DirectX, weitere wichtige API Bibliothek ist die user32.dll.




Wofür und warum man die Windows API manchmal trotzdem braucht


Du möchtest einen systemweiten Keylogger programmieren. Dafür musst ja sämltiche Tastatureingaben in dem Betriebssystem mitbekommen. Dies wird über die API GetKeyState aus der user32.dll ermöglicht.
Du möchtest ein Programm schreiben, welches ein anderes Programm fernsteuert, weil es keine direkte Schnittstelle zur Anwendung geht. Es gibt dort dann die Möglichkeit 1 die Maus und Tastatur über die Windows API dazu zubewegen ein Ablaufschema, also die Bedienung von dem Programm zu übernehmen. Möglichkeit 2 das Fenster über SendMessage aus der user32.dll direkt mit Nachrichten zu befeuern und auch auf die Ereignisse der Nachricht zu reagieren. Oder wer sich ein Prozess Explorer bauen möchte muss auch auf API's zurückgreifen
Einige spezielle Funktionen stehen natürlich nicht in der jeweiligen Programmiersprache zur Verfügung und müssen über die Windows API angedockt werden. Es lassen sich damit z.B. auch verschiedenste Dialoge von Windows aufrufen und einbinden und zwar nicht über die alte rundll32.exe welche das auch erlauben würde. Aber auch z.B. die Lautstärke in einem eigenen Programm zu regeln erfordert die API.

Überblick im Chaos der Windows API Funktionen behalten


In der MSDN befindet sich eine Liste der API Funktionen nach Kategorien sortiert. Diese sind sehr allgemein gehalten. Wer sich mit Visual Basic (VB) auseinandersetzt wird diese API Liste von vbarchiv lieben, es finden sich meist zu jeder API Beispiele wie man genau mit der API arbeitet. Allerdings ist diese Liste ziemlich inkomplett.
Credits möchte ich noch ActiveVB geben, die ein kleines aber feines Tool geschrieben haben den API-Viewer es ist nicht so umfangreich wie die API Liste von vbarchiv, aber sie waren die ersten, die versucht haben die API's zu sammeln! Im Bereich Tipps & Tricks befinden sich viele Tricks für .NET und VB.

Die Windows API nachbauten
Wine: Ein Open-Source-Projekt mit dem Ziel, eine vollständige Win32-API für Linux- und UNIX-artige Betriebssysteme zu erstellen. Die Bibliotheken werden z.B. vom freien Betriebssystem ReactOS verwendet, oder auch von DarWine (heute Winebottler) eine Möglichkeit unter Mac OS X Windows Programme zu starten.

In weiteren Artikeln werde ich die Programmierung mit WinAPI und nen API - Monitor vorstellen!


Keine Kommentare:

Kommentar veröffentlichen

Related Posts Plugin for WordPress, Blogger...