.NET 程序集

.NET 程序集

一、程序集的功能

1、程序集包含公共语言运行库执行的代码(如果可移植可执行PE文件没有管理程序集清单,则将不执行该文件中的MSIL代码。每个程序集只能有一个入口,即DllMain、WinMain或Main);
2、程序集形成安全边界,程序集是.NET代码请求和授权的单元;
3、程序集形成类型边界;
4、程序集形成引用范围边界,程序集的清单包含用于解析类型和满足资源请求的程序集元数据,它指定在该程序集之外公开的类型和资源。该清单还枚举它所依赖的其他程序集。
5、程序集形式版本边界;
6、程序集形成部署单元;
7、程序集是支持并行执行的单元。

二、程序集内容

1、程序集清单,包含程序集元数据
  ----程序集清单的内容----
  程序集名称:程序集的名称
  版本号:主版本号和次版本号,以及修订号和内部版本号
  区域性:有关该程序集支持区域性或语言的信息
  强名称信息:如果已经为程序集提供了一个强名称,则该信息来自发行者公钥
  程序集中所有文件的列表:在程序集中包含的每一个文件的散列和文件名
  类型引用信息:运行库用来将类型引用映射到包含其声明和实现的文件的信息
  有关被引用程序集的信息:该程序集静态引用的其他程序集的列表。如果依赖的程序集具有强名称,则每一个引用均包括该依赖程序集的名称、程序集元数据(版本、区域性、操作系统等)和公钥
  一组可选的由程序集要求或拒绝的安全权限
  附属程序集针对的文化
2、类型元数据;
3、实现类型的MSIL代码;
4、资源集。

三、使用 Ildasm.exe 命令

命令格式:ildasm [options] [PEfilename] [options]

可用于 .exe、.dll、.obj 和 .lib 文件的选项
选项说明
/out=filename将结果输出到指定文件
/text将结果输出到控制台
/html以 HTML 格式输出(仅在与 /out 选项一起使用时有效)
/rtf以多格式文本输出(仅在与 /text 选项一起使用时有效)
/?显示帮助
可用于 GUI 或文件/控制台输出的选项(仅限于.exe 和 .dll 文件的选项)
选项说明
/bytes以十六进制格式显示作为指令注释的实际字节
/raweh以原始形式显示异常处理子句
/tokens显示类和成员的元数据标记
/source将原始源行显示为注释
/linenum包含对原始源行的引用
/visiblility = vis仅反汇编具有指定可见性。
/pobonly仅反汇编公共项
/quoteallnames将所有名称用单引号括起来
/noca禁止输出自定义特性
/caverbal以文字形式输出 CA blob
/nobar禁止反汇编进度栏窗口弹出
只对文件/控制台输出有效(用于.exe和.dll 文件)的选项
选项说明
/utf8对输出使用 UTF8 编码(默认使用ANSI)
/unicode对输出使用 Unicode 编码
/noil禁止 IL 汇编程序代码输出
/forward使用前向类声明
/typelist输出完整的类型列表
/project如果输入为.winmd 文件,则显示 .NET 投影视图
/header将文件头信息包含在输出中
/item=<类[::<方法>[(sig)]]>只反汇编指定项
/stats包括图像的统计信息
/classlist包括在模块中定义的类的列表
/all/header、/bytes、/stats、/classlist 和 /tokens 的组合
用于 .exe、.dll、.obj 和 .lib 文件的选项
选项说明
/metadata=mdheader显示元数据头信息和大小
/metadata=hex显示以十六进制表示的更多内容以及字
/metadata=csv显示记录计数和堆大小
/metadata=unrex显示无法解析的外部对象
/metadata=schema显示元数据头和架构信息
/metadata=raw显示原始元数据表
/metadata=heaps显示原始堆
/metadata=validate验证元数据的一致性
仅用于 .lib 文件的选项:
选项说明
/objectfile=<对象文件名>显示库中单个对象文件的元数据
IL指令详细表参见:http://www.cnblogs.com/knowledgesea/p/5461040.html
四、具有强名称的程序集

强名称是由程序集的标识加上公钥和数字签名组成的。其中,程序集的标识包括简单文本名称、版本号和区域性信息(如果提供的话)。
强名称是使用相应的私钥,通过程序集文件(包含程序集清单的文件,并因而也包含构成该程序集的所有文件的名称和散列)生成的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值