Bild vergrößern
937
685
http://img3.magnus.de/Lupe-Rechner-Suche-r937x685-C-6d3fbbf4-7973720.jpg
Tiefen-Analyse
.NET-Assemblies mit Visual Basic 2008 analysieren
Ein .NET-Assembly verwaltet intern über angeheftete Metadaten wichtige Programmeigenschaften. Über Reflection greifen Sie darauf zur Laufzeit zu und legen exportierte Typen, Methoden, Eigenschaften und Ereignisse sowie die darüber implementierte Funktionalität im Detail offen.
Das .NET Framework stellt Klassen bereit, über die Sie das System, die laufenden Prozesse und die Assemblies zur Laufzeit analysieren. Assemblies sind im .NET Framework übersetzte Programme oder Code-Bibliotheken (exe oder dll) mit IL-Code (Intermediate Language).
Dieser wird durch die .NET-Compiler erzeugt und zur Laufzeit durch die CLR (Common Language Runtime) und Just-In-Time-Compiler in Maschinenbefehle umgewandelt.
Assembly-Dateiaufbau und Reflection
Der Anfang: Der Assembly Analyzer in der Entwicklungsumgebung von Visual Studio 2008.
Für die Ausführung enthalten Programme einen Dateikopf (Header). Herkömmliche Windows-Anwendungen nutzen einen erweiterten Windows-PE-Header (Portable Executable), der über Symboltabellen, angebundene Module und Funktionen informiert. Diese Infos sind binär in der Programmdatei abgelegt und über virtuelle Adressen (RVAs) anspringbar und auslesbar.
Assemblies verwenden abgewandelte PE-Header, um unter Windows sicher zu arbeiten. Metadaten erweitern die Assemblies und beschreiben deren Elemente. Dazu gehören die Informationen zu ladbaren Elementen wie zu einer Datei oder einem Assembly oder zu Schnittstellenelementen.
Alle Informationen sind programmseitig und auch zur Laufzeit abfragbar, ohne die Programmdatei selbst binär zu analysieren. Die Ermittlung der Programmeigenschaften zur Laufzeit wird als Reflection bezeichnet. Das .NET-Framework bietet über den Namespace (Namensraum) System.Relection Werkzeuge, um Assemblies zu analysieren.
Auch der IL-Disassembler ILDASM,Bestandteil des .NET Framework, sowie das Freeware-Programm .NET Reflector nutzen diese Werkzeuge. Der Beitrag zeigt, wie Sie darauf aufbauend ein Analysewerkzeug für Assemblies programmieren. Das Tool integriert Analyse- sowie Suchfunktion und fragt Datei- und Assembly-Eigenschaften sowie den Online-Modus ab.
Projektaufbau
Bild vergrößern
609
487
http://img4.magnus.de/-NET-Ass-emblies-mit-Visual-Basic-2008-analysieren-r609x487-C-7b4ad3d2-31155426.jpg
Anwahl: Die erste Analyse eines Assemblies verweist auf Assemblies und Bibliotheken.
Anwahl: Die erste Analyse eines Assemblies verweist auf Assemblies und Bibliotheken.
Das Programm liegt im Quell- und Binärformat auf der Heft-DVD vor. Von der DVD laden Sie die Solutiondatei AssemblyAnalyzer.sln in die Entwicklungsumgebung von Visual Studio 2008 oder VB 2008 Express. Das Projekt definiert über die Klassendatei Assembly-Info.vb allgemeine Versionsinformationen und über das Formular Splash.vb einen Willkommensbildschirm, den der Programmstart zeigt.
Dies erreichen Sie, indem Sie über die Projektoptionen das Anwendungs-Framework aktivieren und das Formular als Begrüßungsbildschirm selektieren. Um das Laden und Entladen brauchen Sie sich nicht mehr zu kümmern. Assemblies analysiert ein Benutzersteuerelement, das die Datei AnalyzerCtl.vb definiert. Das Hauptformlar zum Analysewerkzeug bestimmt die Datei frmMain.vb
Das Hauptformular mit Symbolleiste und Menü lädt Assemblies und fragt Informationen ab. Das Oberflächendesign rufen Sie über die Entwicklungsumgebung ab. Die Tabelle Programmfunktionen in der Übersicht fasst die Funktionen anhand der Menüfunktionen zusammen. Alle Menüfunktionen rufen Sie auch über Symbolschaltflächen ab.