.NET Assemblies und Metadaten René Löschl 1 Inhalt Begriffe Eigenschaften von Metadaten Vorteile von Metadaten Typische Metadaten Zugriff und Verwaltung Struktur von Assemblies Eigenschaften von Assemblies 2 Begriffe Metadaten Metadaten-Token Modul Manifest RVA Assembly „managed“ Code 3 Eigenschaften von Metadaten werden in selber Datei wie Programm Code gespeichert werden über Metadaten-Tokens angesprochen Metadaten werden in Tabellen gespeichert Drei Arten von Tabellen 1. Definitionstabellen 2. Referenztabellen 3. Manifesttabellen 4 Vorteile von Metadaten Sprachunabhängigkeit einfache Versionsverwaltung einfache Datenübertragung Einfache Nationalisierung Sicherheit Metadaten und „unmanaged“ APIs 5 Komplette Liste der Metadatentabellen 0x00 Module 0x0B Constant 0x14 Event 0x1D FieldRVA 0x27 Export ed Type 0x01 TypeRef 0x0c CustomAttribute 0x15 0x20 Assembly Property Map 0x02 TypeDef 0x0D FieldMarshal 0x17 Property Manif est Resou rce 0x21 AssemplyPr ocessor 0x04 Field 0x0E DeclSecurity 0x18 MethodS emantics 0x06 Method 0x0F ClassLayout 0x19 0x10 FieldLayout 0x23 0x1A AssemblyR ef 0x24 ModuleR ef 0x09 0x11 StandAloneSig InterfaceI mpl 0x0A 0x1B AssemblyR efProcessor 0x25 TypeSpec 0x12 EventMap 0x29 Nested Class 0x22 Assembly OS MethodI mpl 0x08 Param 0x28 0x1C ImplMap AssemblyR ef- OS 0x26 Fie MemberRe f 6 Einige Metadatentabellen Code Tabellenname Spalte n Beschreibung 0x00 Module 5 Diese Tabelle enthält nur eine Zeile, die den Namen, die Beschreibung und das GUID speichert, das mit dem Modul verbunden wird. 0x04 Field 3 Diese Tabelle definiert die Attribute für ein Feld, seinen Namen und seine Signatur. 0x06 Method 6 Diese Tabelle enthält für jede im Modul definierte Methode einen Eintrag. In den Spalten werden Informationen und der Startpunkt des Codes gespeichert. 0x09 InterfaceImpl 0x20 Assembly 0x26 File Hier wird festgehalten, welche Interfaces durch das Modul beschrieben werden. 6 3 HashAlgId MajorVersion Flags PublicKey Name Culture Assemblies können andere Dateien wie Dokumentationen oder Konfigurationen mit .file referenzieren. Diese Tabelle enthält alle .file Einträge. 7 Prüfung von Metadaten 1. 2. 3. 1. 2. 3. Fehlerklassen: Error Warning CLS Prüfungsregeln: keine Tabelle zwei gleiche Zeilen Prüfen der Bitmasken auf Richtigkeit Etc. 8 Zugriff und Verwaltung Reflection API COM API Schwierigkeit besteht darin, die logische Darstellung von Metadaten auf ihre physikalische Repräsentation abzubilden! 9 Physical Dump „Hello World“ 10 Struktur von Assemblies im Windows kompatiblen PE-Fileformat 11 Betrachtung von Assemblies Dumpbin PEDump ildasm 12 Dump eines Assemblies (1/2) 13 Dump eines Assemblies (2/2) 14 Physical Dump „Hello World“ 15 Eigenschaften von Assemblies einziges Modul darf einen Eintrag in der AssemblyTabelle Assembly fasst Module zu logischer Einheit zusammen nur wenige Bytes von x86 Code enthalten Metadaten 16 Fin Danke für Eure Aufmerksamkeit… 17