虫虫技术在线--技术决定出路

当前位置: 首页 > 编程 > .net >

微软MVP手把手教你如何修改.NET Framework

时间:2010-04-07 23:38来源:虫虫技术在线收集整理 作者:虫虫编辑 点击:
这段时间为跟踪一个Bug而焦头烂额,最后发现是.NET Framework的问题,这让人多少有些绝望。所以到微软论坛提了个帖子,希望能得到些帮助。虽然论坛智能到能够判断楼主是否是MSDN订阅

这段时间为跟踪一个Bug而焦头烂额,最后发现是.NET Framework的问题,这让人多少有些绝望。所以到微软论坛提了个帖子,希望能得到些帮助。虽然论坛智能到能够判断楼主是否是MSDN订阅用户,以便尽快解决(传说MSDN订阅用户的问题能在两天内得到回复的,当时还很得意公司为我们购买的MSDN订阅账号),但得到的回复是“Could you file a bug report for this issue through Connect?”,绝望之后的又一次寒心啊。

看过payeasy的广告之后,便有了以下的这些内容,如何修改.NET Framework: 

这里我们以修改Guid类为例,我们将修改这个类的内部构造,以便其始终构造值为0值(00000000-0000-0000-000000000000)的对象

1,知道你要修改.NET Framework中的谁(dll的名称)

这很简单, 翻翻MSDN,你应该能找到你所调用的类库是哪一个,或者使用reflector可以得到更详尽的信息。从MSDN得知,Guid类在mscorlib.dll中

2,找到你要修改的dll,并拷贝出来,以便修改

mscorlib.dll位于GAC中,很可惜,windows只允许按照“可远观不可亵玩"的方式静静欣赏(尽管心急如焚)
 


我们现在需要将该dll在操作系统中的实际路径找出来

2.1 下载FileMon,其用于监视文件的被访问情况,我们可以通过他,找到文件路径

2.2  写一个小程序,让该程序去访问(引用)你需要查找路径的文件,这里也就是我们的mscorlib

        static void Main(string[] args)
{
Guid guid = Guid.NewGuid();
Console.WriteLine(guid);
Console.Read();
}

代码中的Guid以及Console等都会访问mscorlib.dll

2.3 运行FileMon,让他去监视mscorlib的访问,由于我们不知道mscorlib的具体路径(废话),但我们至少知道它在C:\WINDOWS\assembly下(至少知道在系统盘下),那么我们就将这个文件夹及其所有文件一块监视吧: 

监视文件


2.4,运行我们的小程序,FileMon将监视到所有到C:\WINDOWS\assembly下的访问,并将包含mscorlib的高亮,双击列表中的条目,其将自动打开文件所在的文件夹:

打开文件所在的文件夹


OK,现在找到该dll文件了,将其拷贝出来,以供我们修改,并将其路径记录下来以备将来使用(C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089)。另外,建议备份一下拷出来的dll。

3,利用ildasm反编译该dll,生成中间语言(IL)文件,我们将修改该IL文件

ildasm是.NET自带的一个反编译工具,可以再SDK中找到,但通过VS的控制台便可以使用了(具体使用方式,参考MSDN)
 

VS控制台


然后可以得到该程序集的IL文件
 

得到IL文件


 

它其实是一个文本文件,所以可以直接打开进行编辑,但建议使用Notepad++或 UltraEdit 文本编辑器,但打开后似乎有些让人有些崩溃,汪洋大海啊,如何找到我们需要修改的代码所在的位置呢?

(责任编辑:admin)

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容