元数据

源代码

using System;

namespace SimpleAssembly
{
    /// <summary>
    /// 创建一个包含私有成员、特性、方法的简单类型
    /// </summary>
    [Serializable]
    class Program
    {
        private string _MyString;
        public Program(string mystring)
        {
            _MyString = mystring;
        }
        public override string ToString()
        {
            return _MyString;
        }
        static void Main(string[] args)
        {
            Console.WriteLine("简单程序集");
            Console.Read();
        }
    }
}
  

编译后生成 EXE 文件,用 ILDasm.exe 查看程序集的元数据。

ILDasm /ALL /METADATA /OUT=SimpleAssembly.ILDasm.log SimpleAssembly.exe
  

元数据(元信息)部分大致可以分为定义表、引用表和清单表。

  • 定义表包含了自定义的类型,以及其内部的字段、方法和特性等。如元数据中的 TypeDef。
  • 引用表包含了引用的类型清单和引用程序集清单,如 TypeRef 和 AssemblyRef 等。
  • 清单表则列出了整个程序集包含的内容,如 Assembly 块等。

反汇编结果

点击查看反汇编结果

//  Microsoft (R) .NET Framework IL Disassembler.  Version 4.6.81.0



// ----- DOS Header:
// Magic:                      0x5a4d
// Bytes on last page:         0x0090
// Pages in file:              0x0003
// Relocations:                0x0000
// Size of header (paragraphs):0x0004
// Min extra paragraphs:       0x0000
// Max extra paragraphs:       0xffff
// Initial (relative) SS:      0x0000
// Initial SP:                 0x00b8
// Checksum:                   0x0000
// Initial IP:                 0x0000
// Initial (relative) CS:      0x0000
// File addr. of reloc table:  0x0040
// Overlay number:             0x0000
// OEM identifier:             0x0000
// OEM info:                   0x0000
// File addr. of COFF header:  0x0080
// ----- COFF/PE Headers:
// Signature:                  0x00004550
// ----- COFF Header:
// Machine:                    0x014c
// Number of sections:         0x0003
// Time-date stamp:            0x56a640d9
// Ptr to symbol table:        0x00000000
// Number of symbols:          0x00000000
// Size of optional header:    0x00e0
// Characteristics:            0x0022
// ----- PE Optional Header (32 bit):
// Magic:                          0x010b
// Major linker version:           0x30
// Minor linker version:           0x00
// Size of code:                   0x00000800
// Size of init.data:              0x00000800
// Size of uninit.data:            0x00000000
// Addr. of entry point:           0x0000279a
// Base of code:                   0x00002000
// Base of data:                   0x00004000
// Image base:                     0x00400000
// Section alignment:              0x00002000
// File alignment:                 0x00000200
// Major OS version:               0x0004
// Minor OS version:               0x0000
// Major image version:            0x0000
// Minor image version:            0x0000
// Major subsystem version:        0x0006
// Minor subsystem version:        0x0000
// Size of image:                  0x00008000
// Size of headers:                0x00000200
// Checksum:                       0x00000000
// Subsystem:                      0x0003
// DLL characteristics:            0x8560
// Size of stack reserve:          0x00100000
// Size of stack commit:           0x00001000
// Size of heap reserve:           0x00100000
// Size of heap commit:            0x00001000
// Loader flags:                   0x00000000
// Directories:                    0x00000010
// 0x00000000 [0x00000000] address [size] of Export Directory:          
// 0x00002745 [0x0000004f] address [size] of Import Directory:          
// 0x00004000 [0x000005dc] address [size] of Resource Directory:        
// 0x00000000 [0x00000000] address [size] of Exception Directory:       
// 0x00000000 [0x00000000] address [size] of Security Directory:        
// 0x00006000 [0x0000000c] address [size] of Base Relocation Table:     
// 0x000026b8 [0x0000001c] address [size] of Debug Directory:           
// 0x00000000 [0x00000000] address [size] of Architecture Specific:     
// 0x00000000 [0x00000000] address [size] of Global Pointer:            
// 0x00000000 [0x00000000] address [size] of TLS Directory:             
// 0x00000000 [0x00000000] address [size] of Load Config Directory:     
// 0x00000000 [0x00000000] address [size] of Bound Import Directory:    
// 0x00002000 [0x00000008] address [size] of Import Address Table:      
// 0x00000000 [0x00000000] address [size] of Delay Load IAT:            
// 0x00002008 [0x00000048] address [size] of CLR Header:                


// Image sections:
//              .text
//              0x000007a0 Virtual Size
//              0x00002000 Virtual Address
//              0x00000800 Size of Raw Data
//              0x00000200 Pointer to Raw Data
//              0x00000000 Pointer to Relocations
//              0x00000000 Pointer to Linenumbers
//                  0x0000 Number of Relocations
//                  0x0000 Number of Linenumbers
//              0x60000020 Characteristics
//                         CNT_CODE
//                         MEM_EXECUTE
//                         MEM_READ

//              .rsrc
//              0x000005dc Virtual Size
//              0x00004000 Virtual Address
//              0x00000600 Size of Raw Data
//              0x00000a00 Pointer to Raw Data
//              0x00000000 Pointer to Relocations
//              0x00000000 Pointer to Linenumbers
//                  0x0000 Number of Relocations
//                  0x0000 Number of Linenumbers
//              0x40000040 Characteristics
//                         CNT_INITIALIZED_DATA
//                         MEM_READ

//              .reloc
//              0x0000000c Virtual Size
//              0x00006000 Virtual Address
//              0x00000200 Size of Raw Data
//              0x00001000 Pointer to Raw Data
//              0x00000000 Pointer to Relocations
//              0x00000000 Pointer to Linenumbers
//                  0x0000 Number of Relocations
//                  0x0000 Number of Linenumbers
//              0x42000040 Characteristics
//                         CNT_INITIALIZED_DATA
//                         MEM_DISCARDABLE
//                         MEM_READ

// Base Relocation Table
//              0x00002000 Page RVA
//              0x0000000c Block Size
//              0x00000002 Number of Entries
//              Entry 1: Type 0x3 Offset 0x0000079c
//              Entry 2: Type 0x0 Offset 0x00000000

// Import Address Table
//     DLL : mscoree.dll
//              0x00002000 Import Address Table
//              0x00002787 Import Name Table
//              0          Time Date Stamp
//              0          Index of First Forwarder Reference
//
//              0x0000  _CorExeMain

// Delay Load Import Address Table
// 没有数据。

// Entry point code:
//FF 25 00 20 40 00 


// ----- CLR Header:
// Header size:                        0x00000048
// Major runtime version:              0x0002
// Minor runtime version:              0x0005
// 0x00002090 [0x00000628] address [size] of Metadata Directory:        
// Flags:                              0x00020003
// Entry point token:                  0x06000003
// 0x00000000 [0x00000000] address [size] of Resources Directory:       
// 0x00000000 [0x00000000] address [size] of Strong Name Signature:     
// 0x00000000 [0x00000000] address [size] of CodeManager Table:         
// 0x00000000 [0x00000000] address [size] of VTableFixups Directory:    
// 0x00000000 [0x00000000] address [size] of Export Address Table:      
// 0x00000000 [0x00000000] address [size] of Precompile Header:         

// Metadata Header
//    Storage Signature:
//              0x424a5342 Signature
//                  0x0001 Major Version
//                  0x0001 Minor Version
//              0x00000000 Extra Data Offset
//              0x0000000c Version String Length
//              'v4.0.30319' Version String
//    Storage Header:
//                    0x00 Flags
//                  0x0005 Number of Streams
//    Stream 1:
//              0x0000006c Offset
//              0x000001f4 Size
//              '#~' Name
//    Stream 2:
//              0x00000260 Offset
//              0x00000280 Size
//              '#Strings' Name
//    Stream 3:
//              0x000004e0 Offset
//              0x00000010 Size
//              '#US' Name
//    Stream 4:
//              0x000004f0 Offset
//              0x00000010 Size
//              '#GUID' Name
//    Stream 5:
//              0x00000500 Offset
//              0x00000128 Size
//              '#Blob' Name

//    Metadata Stream Header:
//              0x00000000 Reserved
//                    0x02 Major
//                    0x00 Minor
//                    0x00 Heaps
//                    0x01 Rid
//      0x0000000900021557 MaskValid
//      0x000016003301fa00 Sorted

// Code Manager Table:
//  default


// Export Address Table Jumps:
// 没有数据。

// File size            : 4608
// PE header size       : 512 (496 used)    (11.11%)
// PE additional info   : 1699              (36.87%)
// Num.of PE sections   : 3
// CLR header size     : 72                 ( 1.56%)
// CLR meta-data size  : 1576               (34.20%)
// CLR additional info : 0                  ( 0.00%)
// CLR method headers  : 14                 ( 0.30%)
// Managed code         : 47                ( 1.02%)
// Data                 : 2048              (44.44%)
// Unaccounted          : -1360             (-29.51%)

// Num.of PE sections   : 3
//   .text    - 2048
//   .rsrc    - 1536
//   .reloc   - 512

// CLR meta-data size  : 1576
//   Module        -    1 (10 bytes)
//   TypeDef       -    2 (28 bytes)      0 interfaces, 0 explicit layout
//   TypeRef       -   17 (102 bytes)
//   MethodDef     -    3 (42 bytes)      0 abstract, 0 native, 3 bodies
//   FieldDef      -    1 (6 bytes)       0 constant
//   MemberRef     -   17 (102 bytes)
//   ParamDef      -    2 (12 bytes)
//   CustomAttribute-   14 (84 bytes)
//   StandAloneSig -    1 (2 bytes)
//   Assembly      -    1 (22 bytes)
//   AssemblyRef   -    1 (20 bytes)
//   Strings       -   640 bytes
//   Blobs         -   296 bytes
//   UserStrings   -    16 bytes
//   Guids         -    16 bytes
//   Uncategorized -   178 bytes

// CLR method headers : 14
//   Num.of method bodies  - 3
//   Num.of fat headers    - 1
//   Num.of tiny headers   - 2

// Managed code : 47
//   Ave method size - 15
// Classes defined in this module:
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class Program                        (auto) (ansi) 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// ================================= 元信息 ================================================

// ===========================================================
// ScopeName : SimpleAssembly.exe
// MVID      : {804EFF4C-031C-48A0-A99D-137E989366EC}
// ===========================================================
// Global functions
// -------------------------------------------------------
// 
// Global fields
// -------------------------------------------------------
// 
// Global MemberRefs
// -------------------------------------------------------
// 
// TypeDef #1 (02000002)
// -------------------------------------------------------
//     TypDefName: SimpleAssembly.Program  (02000002)
//     Flags     : [NotPublic] [AutoLayout] [Class] [Serializable] [AnsiClass] [BeforeFieldInit]  (00102000)
//     Extends   : 01000010 [TypeRef] System.Object
//     Field #1 (04000001)
//     -------------------------------------------------------
//         Field Name: _MyString (04000001)
//         Flags     : [Private]  (00000001)
//         CallCnvntn: [FIELD]
//         Field type:  String
// 
//     Method #1 (06000001) 
//     -------------------------------------------------------
//         MethodName: .ctor (06000001)
//         Flags     : [Public] [HideBySig] [ReuseSlot] [SpecialName] [RTSpecialName] [.ctor]  (00001886)
//         RVA       : 0x00002050
//         ImplFlags : [IL] [Managed]  (00000000)
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  String
//         1 Parameters
//             (1) ParamToken : (08000001) Name : mystring flags: [none] (00000000)
// 
//     Method #2 (06000002) 
//     -------------------------------------------------------
//         MethodName: ToString (06000002)
//         Flags     : [Public] [Virtual] [HideBySig] [ReuseSlot]  (000000c6)
//         RVA       : 0x00002064
//         ImplFlags : [IL] [Managed]  (00000000)
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: String
//         No arguments.
// 
//     Method #3 (06000003) [ENTRYPOINT]
//     -------------------------------------------------------
//         MethodName: Main (06000003)
//         Flags     : [Private] [Static] [HideBySig] [ReuseSlot]  (00000091)
//         RVA       : 0x0000207c
//         ImplFlags : [IL] [Managed]  (00000000)
//         CallCnvntn: [DEFAULT]
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  SZArray String
//         1 Parameters
//             (1) ParamToken : (08000002) Name : args flags: [none] (00000000)
// 
// 
// TypeRef #1 (01000001)
// -------------------------------------------------------
// Token:             0x01000001
// ResolutionScope:   0x23000001
// TypeRefName:       System.Runtime.CompilerServices.CompilationRelaxationsAttribute
//     MemberRef #1 (0a000001)
//     -------------------------------------------------------
//         Member: (0a000001) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  I4
// 
// TypeRef #2 (01000002)
// -------------------------------------------------------
// Token:             0x01000002
// ResolutionScope:   0x23000001
// TypeRefName:       System.Runtime.CompilerServices.RuntimeCompatibilityAttribute
//     MemberRef #1 (0a000002)
//     -------------------------------------------------------
//         Member: (0a000002) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         No arguments.
// 
// TypeRef #3 (01000003)
// -------------------------------------------------------
// Token:             0x01000003
// ResolutionScope:   0x23000001
// TypeRefName:       System.Diagnostics.DebuggableAttribute
//     MemberRef #1 (0a000003)
//     -------------------------------------------------------
//         Member: (0a000003) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  ValueClass DebuggingModes
// 
// TypeRef #4 (01000004)
// -------------------------------------------------------
// Token:             0x01000004
// ResolutionScope:   0x01000003
// TypeRefName:       DebuggingModes
// 
// TypeRef #5 (01000005)
// -------------------------------------------------------
// Token:             0x01000005
// ResolutionScope:   0x23000001
// TypeRefName:       System.Reflection.AssemblyTitleAttribute
//     MemberRef #1 (0a000004)
//     -------------------------------------------------------
//         Member: (0a000004) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  String
// 
// TypeRef #6 (01000006)
// -------------------------------------------------------
// Token:             0x01000006
// ResolutionScope:   0x23000001
// TypeRefName:       System.Reflection.AssemblyDescriptionAttribute
//     MemberRef #1 (0a000005)
//     -------------------------------------------------------
//         Member: (0a000005) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  String
// 
// TypeRef #7 (01000007)
// -------------------------------------------------------
// Token:             0x01000007
// ResolutionScope:   0x23000001
// TypeRefName:       System.Reflection.AssemblyConfigurationAttribute
//     MemberRef #1 (0a000006)
//     -------------------------------------------------------
//         Member: (0a000006) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  String
// 
// TypeRef #8 (01000008)
// -------------------------------------------------------
// Token:             0x01000008
// ResolutionScope:   0x23000001
// TypeRefName:       System.Reflection.AssemblyCompanyAttribute
//     MemberRef #1 (0a000007)
//     -------------------------------------------------------
//         Member: (0a000007) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  String
// 
// TypeRef #9 (01000009)
// -------------------------------------------------------
// Token:             0x01000009
// ResolutionScope:   0x23000001
// TypeRefName:       System.Reflection.AssemblyProductAttribute
//     MemberRef #1 (0a000008)
//     -------------------------------------------------------
//         Member: (0a000008) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  String
// 
// TypeRef #10 (0100000a)
// -------------------------------------------------------
// Token:             0x0100000a
// ResolutionScope:   0x23000001
// TypeRefName:       System.Reflection.AssemblyCopyrightAttribute
//     MemberRef #1 (0a000009)
//     -------------------------------------------------------
//         Member: (0a000009) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  String
// 
// TypeRef #11 (0100000b)
// -------------------------------------------------------
// Token:             0x0100000b
// ResolutionScope:   0x23000001
// TypeRefName:       System.Reflection.AssemblyTrademarkAttribute
//     MemberRef #1 (0a00000a)
//     -------------------------------------------------------
//         Member: (0a00000a) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  String
// 
// TypeRef #12 (0100000c)
// -------------------------------------------------------
// Token:             0x0100000c
// ResolutionScope:   0x23000001
// TypeRefName:       System.Runtime.InteropServices.ComVisibleAttribute
//     MemberRef #1 (0a00000b)
//     -------------------------------------------------------
//         Member: (0a00000b) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  Boolean
// 
// TypeRef #13 (0100000d)
// -------------------------------------------------------
// Token:             0x0100000d
// ResolutionScope:   0x23000001
// TypeRefName:       System.Runtime.InteropServices.GuidAttribute
//     MemberRef #1 (0a00000c)
//     -------------------------------------------------------
//         Member: (0a00000c) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  String
// 
// TypeRef #14 (0100000e)
// -------------------------------------------------------
// Token:             0x0100000e
// ResolutionScope:   0x23000001
// TypeRefName:       System.Reflection.AssemblyFileVersionAttribute
//     MemberRef #1 (0a00000d)
//     -------------------------------------------------------
//         Member: (0a00000d) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  String
// 
// TypeRef #15 (0100000f)
// -------------------------------------------------------
// Token:             0x0100000f
// ResolutionScope:   0x23000001
// TypeRefName:       System.Runtime.Versioning.TargetFrameworkAttribute
//     MemberRef #1 (0a00000e)
//     -------------------------------------------------------
//         Member: (0a00000e) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  String
// 
// TypeRef #16 (01000010)
// -------------------------------------------------------
// Token:             0x01000010
// ResolutionScope:   0x23000001
// TypeRefName:       System.Object
//     MemberRef #1 (0a00000f)
//     -------------------------------------------------------
//         Member: (0a00000f) .ctor: 
//         CallCnvntn: [DEFAULT]
//         hasThis 
//         ReturnType: Void
//         No arguments.
// 
// TypeRef #17 (01000011)
// -------------------------------------------------------
// Token:             0x01000011
// ResolutionScope:   0x23000001
// TypeRefName:       System.Console
//     MemberRef #1 (0a000010)
//     -------------------------------------------------------
//         Member: (0a000010) WriteLine: 
//         CallCnvntn: [DEFAULT]
//         ReturnType: Void
//         1 Arguments
//             Argument #1:  String
//     MemberRef #2 (0a000011)
//     -------------------------------------------------------
//         Member: (0a000011) Read: 
//         CallCnvntn: [DEFAULT]
//         ReturnType: I4
//         No arguments.
// 
// Signature #1 (0x11000001)
// -------------------------------------------------------
//         CallCnvntn: [LOCALSIG]
//         1 Arguments
//             Argument #1:  String
// 
// Assembly
// -------------------------------------------------------
//     Token: 0x20000001
//     Name : SimpleAssembly
//     Public Key    :
//     Hash Algorithm : 0x00008004
//     Version: 1.0.0.0
//     Major Version: 0x00000001
//     Minor Version: 0x00000000
//     Build Number: 0x00000000
//     Revision Number: 0x00000000
//     Locale: <null>
//     Flags : [none] (00000000)
//     CustomAttribute #1 (0c000001)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a000001
//         CustomAttributeName: System.Runtime.CompilerServices.CompilationRelaxationsAttribute :: instance void .ctor(int32)
//         Length: 8
//         Value : 01 00 08 00 00 00 00 00                          >                <
//         ctor args: (8)
// 
//     CustomAttribute #2 (0c000002)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a000002
//         CustomAttributeName: System.Runtime.CompilerServices.RuntimeCompatibilityAttribute :: instance void .ctor()
//         Length: 30
//         Value : 01 00 01 00 54 02 16 57  72 61 70 4e 6f 6e 45 78 >    T  WrapNonEx<
//                       : 63 65 70 74 69 6f 6e 54  68 72 6f 77 73 01       >ceptionThrows   <
//         ctor args: ()
// 
//     CustomAttribute #3 (0c000003)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a000003
//         CustomAttributeName: System.Diagnostics.DebuggableAttribute :: instance void .ctor(value class DebuggingModes)
//         Length: 8
//         Value : 01 00 07 01 00 00 00 00                          >                <
//         ctor args: ( <can not decode> )
// 
//     CustomAttribute #4 (0c000004)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a000004
//         CustomAttributeName: System.Reflection.AssemblyTitleAttribute :: instance void .ctor(class System.String)
//         Length: 19
//         Value : 01 00 0e 53 69 6d 70 6c  65 41 73 73 65 6d 62 6c >   SimpleAssembl<
//                       : 79 00 00                                         >y               <
//         ctor args: ("SimpleAssembly")
// 
//     CustomAttribute #5 (0c000005)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a000005
//         CustomAttributeName: System.Reflection.AssemblyDescriptionAttribute :: instance void .ctor(class System.String)
//         Length: 5
//         Value : 01 00 00 00 00                                   >                <
//         ctor args: ("")
// 
//     CustomAttribute #6 (0c000006)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a000006
//         CustomAttributeName: System.Reflection.AssemblyConfigurationAttribute :: instance void .ctor(class System.String)
//         Length: 5
//         Value : 01 00 00 00 00                                   >                <
//         ctor args: ("")
// 
//     CustomAttribute #7 (0c000007)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a000007
//         CustomAttributeName: System.Reflection.AssemblyCompanyAttribute :: instance void .ctor(class System.String)
//         Length: 5
//         Value : 01 00 00 00 00                                   >                <
//         ctor args: ("")
// 
//     CustomAttribute #8 (0c000008)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a000008
//         CustomAttributeName: System.Reflection.AssemblyProductAttribute :: instance void .ctor(class System.String)
//         Length: 19
//         Value : 01 00 0e 53 69 6d 70 6c  65 41 73 73 65 6d 62 6c >   SimpleAssembl<
//                       : 79 00 00                                         >y               <
//         ctor args: ("SimpleAssembly")
// 
//     CustomAttribute #9 (0c000009)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a000009
//         CustomAttributeName: System.Reflection.AssemblyCopyrightAttribute :: instance void .ctor(class System.String)
//         Length: 23
//         Value : 01 00 12 43 6f 70 79 72  69 67 68 74 20 c2 a9 20 >   Copyright    <
//                       : 20 32 30 31 36 00 00                             > 2016           <
//         ctor args: ("Copyright ?  2016")
// 
//     CustomAttribute #10 (0c00000a)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a00000a
//         CustomAttributeName: System.Reflection.AssemblyTrademarkAttribute :: instance void .ctor(class System.String)
//         Length: 5
//         Value : 01 00 00 00 00                                   >                <
//         ctor args: ("")
// 
//     CustomAttribute #11 (0c00000b)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a00000b
//         CustomAttributeName: System.Runtime.InteropServices.ComVisibleAttribute :: instance void .ctor(bool)
//         Length: 5
//         Value : 01 00 00 00 00                                   >                <
//         ctor args: ( <can not decode> )
// 
//     CustomAttribute #12 (0c00000c)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a00000c
//         CustomAttributeName: System.Runtime.InteropServices.GuidAttribute :: instance void .ctor(class System.String)
//         Length: 41
//         Value : 01 00 24 31 39 62 34 30  30 33 64 2d 36 30 66 36 >  $19b4003d-60f6<
//                       : 2d 34 66 64 64 2d 61 33  33 38 2d 31 37 35 65 30 >-4fdd-a338-175e0<
//                       : 63 63 34 61 66 33 65 00  00                      >cc4af3e         <
//         ctor args: ("19b4003d-60f6-4fdd-a338-175e0cc4af3e")
// 
//     CustomAttribute #13 (0c00000d)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a00000d
//         CustomAttributeName: System.Reflection.AssemblyFileVersionAttribute :: instance void .ctor(class System.String)
//         Length: 12
//         Value : 01 00 07 31 2e 30 2e 30  2e 30 00 00             >   1.0.0.0      <
//         ctor args: ("1.0.0.0")
// 
//     CustomAttribute #14 (0c00000e)
//     -------------------------------------------------------
//         CustomAttribute Type: 0a00000e
//         CustomAttributeName: System.Runtime.Versioning.TargetFrameworkAttribute :: instance void .ctor(class System.String)
//         Length: 77
//         Value : 01 00 1c 2e 4e 45 54 46  72 61 6d 65 77 6f 72 6b >   .NETFramework<
//                       : 2c 56 65 72 73 69 6f 6e  3d 76 34 2e 35 2e 32 01 >,Version=v4.5.2 <
//                       : 00 54 0e 14 46 72 61 6d  65 77 6f 72 6b 44 69 73 > T  FrameworkDis<
//                       : 70 6c 61 79 4e 61 6d 65  14 2e 4e 45 54 20 46 72 >playName .NET Fr<
//                       : 61 6d 65 77 6f 72 6b 20  34 2e 35 2e 32          >amework 4.5.2   <
//         ctor args: (".NETFramework,Version=v4.5.2")
// 
// 
// AssemblyRef #1 (23000001)
// -------------------------------------------------------
//     Token: 0x23000001
//     Public Key or Token: b7 7a 5c 56 19 34 e0 89 
//     Name: mscorlib
//     Version: 4.0.0.0
//     Major Version: 0x00000004
//     Minor Version: 0x00000000
//     Build Number: 0x00000000
//     Revision Number: 0x00000000
//     Locale: <null>
//     HashValue Blob:
//     Flags: [none] (00000000)
// 
// 
// User Strings
// -------------------------------------------------------
// 70000001 : ( 5) L""
// 
// 
// Coff symbol name overhead:  0
// ===========================================================
// ===========================================================
// ===========================================================
// ================================= 元信息结束 ================================================


// Metadata version: v4.0.30319
.assembly extern /23000001/ mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 4:0:0:0
}
.assembly /20000001/ SimpleAssembly
{
  .custom /0C000001:0A000001/ instance void [mscorlib/23000001/]System.Runtime.CompilerServices.CompilationRelaxationsAttribute/01000001/::.ctor(int32) / 0A000001 / = ( 01 00 08 00 00 00 00 00 ) 
  .custom /0C000002:0A000002/ instance void [mscorlib/23000001/]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute/01000002/::.ctor() / 0A000002 / = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
                                                                                                                                                                          63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.

  // --- 下列自定义特性会自动添加,不要取消注释 -------
  //  .custom /0C000003:0A000003/ instance void [mscorlib/23000001/]System.Diagnostics.DebuggableAttribute/01000003/::.ctor(valuetype [mscorlib/23000001/]System.Diagnostics.DebuggableAttribute/01000003//DebuggingModes/01000004/) / 0A000003 / = ( 01 00 07 01 00 00 00 00 ) 

  .custom /0C000004:0A000004/ instance void [mscorlib/23000001/]System.Reflection.AssemblyTitleAttribute/01000005/::.ctor(string) / 0A000004 / = ( 01 00 0E 53 69 6D 70 6C 65 41 73 73 65 6D 62 6C   // ...SimpleAssembl
                                                                                                                                                           79 00 00 )                                        // y..
  .custom /0C000005:0A000005/ instance void [mscorlib/23000001/]System.Reflection.AssemblyDescriptionAttribute/01000006/::.ctor(string) / 0A000005 / = ( 01 00 00 00 00 ) 
  .custom /0C000006:0A000006/ instance void [mscorlib/23000001/]System.Reflection.AssemblyConfigurationAttribute/01000007/::.ctor(string) / 0A000006 / = ( 01 00 00 00 00 ) 
  .custom /0C000007:0A000007/ instance void [mscorlib/23000001/]System.Reflection.AssemblyCompanyAttribute/01000008/::.ctor(string) / 0A000007 / = ( 01 00 00 00 00 ) 
  .custom /0C000008:0A000008/ instance void [mscorlib/23000001/]System.Reflection.AssemblyProductAttribute/01000009/::.ctor(string) / 0A000008 / = ( 01 00 0E 53 69 6D 70 6C 65 41 73 73 65 6D 62 6C   // ...SimpleAssembl
                                                                                                                                                             79 00 00 )                                        // y..
  .custom /0C000009:0A000009/ instance void [mscorlib/23000001/]System.Reflection.AssemblyCopyrightAttribute/0100000A/::.ctor(string) / 0A000009 / = ( 01 00 12 43 6F 70 79 72 69 67 68 74 20 C2 A9 20   // ...Copyright .. 
                                                                                                                                                               20 32 30 31 36 00 00 )                            //  2016..
  .custom /0C00000A:0A00000A/ instance void [mscorlib/23000001/]System.Reflection.AssemblyTrademarkAttribute/0100000B/::.ctor(string) / 0A00000A / = ( 01 00 00 00 00 ) 
  .custom /0C00000B:0A00000B/ instance void [mscorlib/23000001/]System.Runtime.InteropServices.ComVisibleAttribute/0100000C/::.ctor(bool) / 0A00000B / = ( 01 00 00 00 00 ) 
  .custom /0C00000C:0A00000C/ instance void [mscorlib/23000001/]System.Runtime.InteropServices.GuidAttribute/0100000D/::.ctor(string) / 0A00000C / = ( 01 00 24 31 39 62 34 30 30 33 64 2D 36 30 66 36   // ..$19b4003d-60f6
                                                                                                                                                               2D 34 66 64 64 2D 61 33 33 38 2D 31 37 35 65 30   // -4fdd-a338-175e0
                                                                                                                                                               63 63 34 61 66 33 65 00 00 )                      // cc4af3e..
  .custom /0C00000D:0A00000D/ instance void [mscorlib/23000001/]System.Reflection.AssemblyFileVersionAttribute/0100000E/::.ctor(string) / 0A00000D / = ( 01 00 07 31 2E 30 2E 30 2E 30 00 00 )             // ...1.0.0.0..
  .custom /0C00000E:0A00000E/ instance void [mscorlib/23000001/]System.Runtime.Versioning.TargetFrameworkAttribute/0100000F/::.ctor(string) / 0A00000E / = ( 01 00 1C 2E 4E 45 54 46 72 61 6D 65 77 6F 72 6B   // ....NETFramework
                                                                                                                                                                     2C 56 65 72 73 69 6F 6E 3D 76 34 2E 35 2E 32 01   // ,Version=v4.5.2.
                                                                                                                                                                     00 54 0E 14 46 72 61 6D 65 77 6F 72 6B 44 69 73   // .T..FrameworkDis
                                                                                                                                                                     70 6C 61 79 4E 61 6D 65 14 2E 4E 45 54 20 46 72   // playName..NET Fr
                                                                                                                                                                     61 6D 65 77 6F 72 6B 20 34 2E 35 2E 32 )          // amework 4.5.2
  .hash algorithm 0x00008004
  .ver 1:0:0:0
}
.module SimpleAssembly.exe
// MVID: {804EFF4C-031C-48A0-A99D-137E989366EC}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003       // WINDOWS_CUI
.corflags 0x00020003    //  ILONLY 32BITPREFERRED
// Image base: 0x00D90000


// =============== CLASS MEMBERS DECLARATION ===================

.class /02000002/ private auto ansi serializable beforefieldinit SimpleAssembly.Program
       extends [mscorlib/23000001/]System.Object/01000010/
{
  .field /04000001/ private string _MyString
  .method /06000001/ public hidebysig specialname rtspecialname 
          instance void  .ctor(string mystring) cil managed
  // SIG: 20 01 01 0E
  {
    // 方法在 RVA 0x2050 处开始
    // 代码大小       16 (0x10)
    .maxstack  8
    IL_0000:  / 02   |                  / ldarg.0
    IL_0001:  / 28   | (0A)00000F       / call       instance void [mscorlib/23000001/]System.Object/01000010/::.ctor() / 0A00000F /
    IL_0006:  / 00   |                  / nop
    IL_0007:  / 00   |                  / nop
    IL_0008:  / 02   |                  / ldarg.0
    IL_0009:  / 03   |                  / ldarg.1
    IL_000a:  / 7D   | (04)000001       / stfld      string SimpleAssembly.Program/02000002/::_MyString / 04000001 /
    IL_000f:  / 2A   |                  / ret
  } // end of method Program::.ctor

  .method /06000002/ public hidebysig virtual 
          instance string  ToString() cil managed
  // SIG: 20 00 0E
  {
    // 方法在 RVA 0x2064 处开始
    // 代码大小       12 (0xc)
    .maxstack  1
    .locals /11000001/ init (string V_0)
    IL_0000:  / 00   |                  / nop
    IL_0001:  / 02   |                  / ldarg.0
    IL_0002:  / 7B   | (04)000001       / ldfld      string SimpleAssembly.Program/02000002/::_MyString / 04000001 /
    IL_0007:  / 0A   |                  / stloc.0
    IL_0008:  / 2B   | 00               / br.s       IL_000a

    IL_000a:  / 06   |                  / ldloc.0
    IL_000b:  / 2A   |                  / ret
  } // end of method Program::ToString

  .method /06000003/ private hidebysig static 
          void  Main(string[] args) cil managed
  // SIG: 00 01 01 1D 0E
  {
    .entrypoint
    // 方法在 RVA 0x207c 处开始
    // 代码大小       19 (0x13)
    .maxstack  8
    IL_0000:  / 00   |                  / nop
    IL_0001:  / 72   | (70)000001       / ldstr      bytearray (80 7B 55 53 0B 7A 8F 5E C6 96 )                   // .{US.z.^.. / 70000001 /
    IL_0006:  / 28   | (0A)000010       / call       void [mscorlib/23000001/]System.Console/01000011/::WriteLine(string) / 0A000010 /
    IL_000b:  / 00   |                  / nop
    IL_000c:  / 28   | (0A)000011       / call       int32 [mscorlib/23000001/]System.Console/01000011/::Read() / 0A000011 /
    IL_0011:  / 26   |                  / pop
    IL_0012:  / 2A   |                  / ret
  } // end of method Program::Main

} // end of class SimpleAssembly.Program


// =============================================================

// [i][b][b] 反汇编完成 [/b][/b][/i]****************
// 警告: 创建了 Win32 资源文件 SimpleAssembly.ILDasm.res