首页
论坛
课程
招聘
[分享]Reflector.Addin v.6.5.0(33 + 46 + 57 + 70 + 89 + 99 + 106 + 120 + 123) C# 源码
2010-4-19 20:23 60650

[分享]Reflector.Addin v.6.5.0(33 + 46 + 57 + 70 + 89 + 99 + 106 + 120 + 123) C# 源码

2010-4-19 20:23
60650
花了一天时间把源码反了出来,
可以编译,但无法运行,还缺少一些东些

可以生成Addin的序列号,但由于没有RSA的私匙无法激活
搞的心情很不爽,没时间搞了,留个记念

2010.04.20 补上缺少的资源DLL,请自行修复

2010.04.21 修复了部分资源,完全可以正常使用了
只测试过 VS2005,VS2008
现在不需要序列号了
如果使用中有问题可以跟贴

请重新下载附件

2010.04.22 添加 Reflector.Addin.v6.5.0.46 的源码
只包含Addin的源码,Reflector请使用6.5.0.33的

2010.04.28 添加 Reflector.Addin.v6.5.0.57 的源码

2010.05.07 添加 Reflector.Addin.v6.5.0.70 的源码

2010.05.24 添加 Reflector.Addin.v6.5.0.89 的源码

2010.06.07 添加 Reflector.Addin.v6.5.0.99 的源码

2010.06.17 添加 Reflector.Addin.v6.5.0.106 的源码

2010.07.12 添加 Reflector.Addin.v6.5.0.120 的源码

2010.07.14 添加 Reflector.Addin.v6.5.0.123 的源码


VS2008 和以上的版本如果无法编译, 这两个类的访问属性 internal 改成 public

已知 Reflector BUG (我反出的源码上一直存在,是 Reflector 反编译的 BUG 造成的)。
修复如下,Reflector.Addin.v6.5.0.70 中我已经改过了,其它版本的大家自己改一下,代码如下:
expression.Value = (ulong) ((int) expression.Value); // 上下文:"System", "UInt64") && (expression.Value is int))
要改成 expression.Value = (ulong) (uint)((int) expression.Value);

Reflector 反编译 ulong value = (ulong) (uint) (intValue);这样的语句时会出错
会直接变成 ulong value = (ulong) (intValue); // 会导致 当intValue 的高位为1时结果不对

6.5.0.46、6.5.0.57 、6.5.0.70 界面卡住的修复:
查找在项目中查找 "(Reference reference in project.References)" 找到如下代码:

                if (project != null)
                {
                Label_0079:
                    foreach (Reference reference in project.References)
                    {
                        if (reference.SourceProject == null)
                        {
                            try
                            {
                                this.f0012d3(reference, this.f0012d2.m00079b(reference, enum2), enum2);
                                goto Label_0079;
                            }
                            catch (ApplicationException)
                            {
                                goto Label_0079;
                            }
                        }
                    }
                }

                if (project != null)
                {
                Label_0073:
                    foreach (Reference reference in project.References)
                    {
                        if (reference.SourceProject == null)
                        {
                            try
                            {
                                this.f001334(reference, this.f001333.m000855(reference, enum2), enum2);
                                goto Label_0073;
                            }
                            catch (ApplicationException)
                            {
                                goto Label_0073;
                            }
                        }
                    }
                }

                if (project != null)
                {
                Label_0038:
                    foreach (Reference reference in project.References)
                    {
                        if (reference.SourceProject == null)
                        {
                            try
                            {
                                this.f001335(reference, this.f001334.m00084c(reference, enum2), enum2);
                                goto Label_0038;
                            }
                            catch (ApplicationException)
                            {
                                goto Label_0038;
                            }
                        }
                    }
                }

代码中的 goto 语句删除就行了

[公告]请完善个人简历信息,招聘企业等你来!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (123)
雪    币: 5121
活跃值: 活跃值 (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
奘和 活跃值 2010-4-19 21:02
2
0
膜拜CSharp强人!
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
授人以愚 活跃值 2010-4-20 14:29
3
0
那能用不啊,楼主,说详细点儿呗
雪    币: 358
活跃值: 活跃值 (73)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
wangshy 活跃值 2 2010-4-21 15:44
4
0
2010.04.21 修复了部分资源,完全可以正常使用了
只测试过 VS2005,VS2008
现在不需要序列号了
如果使用中有问题可以跟贴

请重新下载附件(一楼)
雪    币: 86
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
tease 活跃值 2010-4-21 17:09
5
0
太牛了
雪    币: 5121
活跃值: 活跃值 (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
奘和 活跃值 2010-4-21 17:21
6
0
再来一次完全膜拜
雪    币: 210
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
TwoSix 活跃值 2010-4-21 18:02
7
0
VS2010 build 失败,提示错误CS0059,修改NS028\c00034e.cs和NS028\c000350.cs后成功。使用无异常。
雪    币: 358
活跃值: 活跃值 (73)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
wangshy 活跃值 2 2010-4-21 18:15
8
0
VS2008 和以上的版本, 这两个类的访问属性 internal 改成 public
雪    币: 326
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 活跃值 4 2010-4-21 18:18
9
0
修正后源码发上来
雪    币: 326
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 活跃值 4 2010-4-21 19:01
10
0
VS打开sln文件出错
提示:
---------------------------
Microsoft Visual Studio
---------------------------
项目“G:\Reflector.Addin.v6.5.0.33\Reflector\Reflector.csproj”所需的应用程序未安装。

确保已安装项目类型(.csproj)的应用程序。
---------------------------
OK   Help   
---------------------------

---------------------------
Microsoft Visual Studio
---------------------------
项目“G:\DOWNLOAD\Reflector.Addin.v6.5.0.33\RedGate.Reflector.Addin\RedGate.Reflector.Addin.csproj”所需的应用程序未安装。

确保已安装项目类型(.csproj)的应用程序。
---------------------------
OK   Help   
---------------------------

---------------------------
Microsoft Visual Studio
---------------------------
项目“G:\DOWNLOAD\Reflector.Addin.v6.5.0.33\KeyGen\KeyGen.csproj”所需的应用程序未安装。

确保已安装项目类型(.csproj)的应用程序。
---------------------------
OK   Help   
---------------------------

我的VS2005信息:
Microsoft Visual Studio 2005
版本 8.0.50727.42  (RTM.050727-4200)
Microsoft .NET Framework
版本 2.0.50727 SP1

已安装的版本: IDE Standard

SQL Server Reporting Services   
Microsoft SQL Server Reporting Services 设计器
版本 9.00.2047.00
雪    币: 358
活跃值: 活跃值 (73)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
wangshy 活跃值 2 2010-4-21 19:06
11
0
你的VS2005没装C#的部分吧
雪    币: 326
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 活跃值 4 2010-4-21 19:14
12
0
我只装了C#
雪    币: 358
活跃值: 活跃值 (73)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
wangshy 活跃值 2 2010-4-21 19:22
13
0
自己手动选择打开方式试一下,要不然修复安装一下
雪    币: 210
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
TwoSix 活跃值 2010-4-21 19:54
14
0
就是把class的modifier从internal 改成public
雪    币: 326
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 活跃值 4 2010-4-21 19:55
15
0
thank you,编译成功了

1、改用管理员帐号打开sln后,前面错误提示消失
2、正如你说的,vs2005也提示那2个文件错误,我把类和构建函数属性都改public后,编译通过,运行正常。
雪    币: 380
活跃值: 活跃值 (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ntzwq 活跃值 2010-4-22 08:30
16
0
运行正常,应该加个精
雪    币: 119
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
刘觐肇 活跃值 2010-4-22 09:33
17
0
真是好东西啊!
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Xiahy 活跃值 2010-4-27 19:55
18
0
这位应该是“牛”哥,哈哈
雪    币: 203
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
clijiac 活跃值 2010-5-3 19:12
19
0
强人啊   膜拜中
雪    币: 90
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
误伤友军 活跃值 2010-5-5 14:29
20
0
楼上厉害!当年也曾想获得REFLECTOR的源码,可惜没成功。想不到今天楼上轻而易举的解决了
雪    币: 326
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 活跃值 4 2010-5-5 22:30
21
0
太崇拜你了!!还又更新了
雪    币: 110
活跃值: 活跃值 (21)
能力值: ( LV12,RANK:220 )
在线值:
发帖
回帖
粉丝
cater 活跃值 5 2010-5-6 11:47
22
0
强大的饭混淆
雪    币: 231
活跃值: 活跃值 (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
liuyilin 活跃值 2010-5-8 20:38
23
0
错误        40        可访问性不一致: 参数类型“NS043.c000371”比委托“RedGate.Licensing.Client.localhost.DeactivateLicenceCompletedEventHandler”的可访问性低        C:\Documents and Settings\liuyilin\桌面\Reflector[1].Addin.v6.5.0.57\RedGate.Reflector.Addin\RedGate\Licensing\Client\localhost\DeactivateLicenceCompletedEventHandler.cs        9        26        RedGate.Reflector.Addin

vs2008,编译 Reflector[1].Addin.v6.5.0.70时出现的.
雪    币: 358
活跃值: 活跃值 (73)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
wangshy 活跃值 2 2010-5-8 22:32
24
0
自己改一下吧,参照一楼的
雪    币: 202
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lunku 活跃值 2010-5-9 00:03
25
0
错误        1        找不到类型或命名空间名称“EnvDTE90”(是否缺少 using 指令或程序集引用?)        G:\Temp\GK\Reflector.Addin.v6.5.0.70\RedGate.Reflector.Addin\RedGate\Reflector\Addin\Connect9.cs        4        11        RedGate.Reflector.Addin

错误        14        找不到类型或命名空间名称“Debugger3”(是否缺少 using 指令或程序集引用?)        G:\Temp\GK\Reflector.Addin.v6.5.0.70\RedGate.Reflector.Addin\NS054\c0003ef.cs        11        26        RedGate.Reflector.Addin
vs2005,编译 Reflector.Addin.v6.5.0.70时出现的.  4个错误,16个警告 ?
雪    币: 358
活跃值: 活跃值 (73)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
wangshy 活跃值 2 2010-5-10 08:15
26
0
google 一下 EnvDTE90
雪    币: 231
活跃值: 活跃值 (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
liuyilin 活跃值 2010-5-10 12:26
27
0
按照1楼的改完,不能解决问题
雪    币: 358
活跃值: 活跃值 (73)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
wangshy 活跃值 2 2010-5-10 13:27
28
0
c000150.cs,c000152.cs,c00036f.cs,c000371.cs这几个文件
学习一下C#的语法吧
雪    币: 202
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lunku 活跃值 2010-5-11 00:52
29
0
终于在网上找到单独的dll,编译通过了,谢谢
雪    币: 41
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sinitic 活跃值 2010-5-13 10:13
30
0
出错的都可能是自己编译器的环境的问题,我的很好,很正常。
雪    币: 326
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 活跃值 4 2010-5-13 13:31
31
0
太爱你了,对付.net程序目前仍以静态反编译为主,没有你,世界黑了一半
雪    币: 231
活跃值: 活跃值 (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
liuyilin 活跃值 2010-5-14 11:32
32
0
因为你一只眼上有墨镜
雪    币: 326
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
快雪时晴 活跃值 4 2010-5-14 18:09
33
0
你好幽默,注册挺早的嘛
雪    币: 202
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
五可 活跃值 2010-5-17 10:17
34
0
牛人啊,编译成功
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jdsuchen 活跃值 2010-5-17 18:20
35
0
Reflector.Addin.v6.5.0.70 插件一直卡在"Reading assemblies from your solution..."画面
Reflector.Addin.v6.5.0.33 不会卡住
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jdsuchen 活跃值 2010-5-17 18:25
36
0
Reflector.Addin.v6.5.0.33 可以正常使用,楼主太强了
雪    币: 195
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
大嘴呀呀 活跃值 2010-5-17 18:36
37
0
我也下一个 但是不知道干什么用的
雪    币: 358
活跃值: 活跃值 (73)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
wangshy 活跃值 2 2010-5-17 18:41
38
0
我测试过 VS2005 + SP1 和  VS2008+SP1 没有发现你说的问题
你说说你的环境,和如何重现这个问题好吗?
雪    币: 209
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yre 活跃值 2010-5-18 06:51
39
0
Reflector.Addin.v6.5.0.70 插件一直卡在"Reading assemblies from your solution..."画面
我的也是这样
环境: vs2008 sp1
用vs2008sp1将源码编译成功。使用时,当打开解决方案后 打开reflector插件,choose .. to debug就停在"Reading assemblies from your solution..."一直不动

希望找到原因,谢谢
雪    币: 358
活跃值: 活跃值 (73)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
wangshy 活跃值 2 2010-5-18 09:53
40
0
能不能说的再详细一点? 我这里无法重现这个问题
最好能截个全图。

你自己可以调试一下,一般卡住不是死循环就是线程被挂起,要不就是死锁
雪    币: 209
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yre 活跃值 2010-5-18 10:08
41
0
当关闭解决方案时 出现错误:引用不可用。详见err2.bmp
上传的附件:
雪    币: 204
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jdsuchen 活跃值 2010-5-18 15:23
42
0
环境:
VS2005 + windowsXP
VS2008 + windows7
都没有打SP1

重现:
打开VS,新建一个Winform的工程,然后打开.Net Reflector->Choose Assemblies to Debug...,然后就会一直卡在这个画面,而且CPU使用率很高,估计在死循环
上传的附件:
雪    币: 209
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yre 活跃值 2010-5-18 15:30
43
0
请问楼主 你在vs2008 sp1测试过吗
我的环境是vs2008 sp1,我按照楼主的方法修改了代码后,在vs2008 sp1编译通过。
然后我将生成的reflector.exe RedGate.Reflector.Addin.dll 和log4net.dll 放在一个新目录里。
运行reflactor.exe正常,在option里 选上vs2008 。然后打开vs2008 菜单上也看到了.net reflector。打开一个解决方案 ,然后点 reflector插件下的 choose assemlies to debug,在"Reading assemblies from your solution..."画面 卡住不动了。但不打开解决方案无此现象。
雪    币: 358
活跃值: 活跃值 (73)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
wangshy 活跃值 2 2010-5-18 17:05
44
0
找到原因了 c000451.cs 中的
if (project != null)
                {
                Label_0038:
                    foreach (Reference reference in project.References)
                    {
                        if (reference.SourceProject == null)
                        {
                            try
                            {
                                this.f001335(reference, this.f001334.m00084c(reference, enum2), enum2);
                                goto Label_0038;
                            }
                            catch (ApplicationException)
                            {
                                goto Label_0038;
                            }
                        }
                    }
                }

这两个goto 删除就行了
雪    币: 209
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yre 活跃值 2010-5-18 18:44
45
0
呵呵 按照大侠说的修改后 问题解决 再次感谢您!!
大侠就是大侠,高啊!!!!!!!!!!!!!!
雪    币: 231
活跃值: 活跃值 (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
liuyilin 活跃值 2010-5-20 09:31
46
0
呵呵 按照大侠说的修改后 问题解决 再次感谢您!!
大侠就是大侠,高啊!!!!!!!!!!!!!!
雪    币: 228
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ssyfzy 活跃值 2010-5-22 11:03
47
0
楼主,能不能把版本检查给去掉?

每次Reflector升级,原来的版本就不能用了,比如现在6.5.0.70就已经不能用了,最新版是6.5.0.89
雪    币: 228
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ssyfzy 活跃值 2010-5-23 10:37
48
0
自己解决了:

在c00006d.cs文件中:

  internal class c00006d
    {
        public static bool m0000d3()
        {
            return false;//添加这一句就行了
            if (m0000d4())
            {
雪    币: 228
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ssyfzy 活跃值 2010-5-23 10:46
49
0
另外,想问一下楼主,你这个源码是怎么得到的?

用Reflector反编译后有很多错误,比如标识符含有非法字符(尤其是“局部变量”,无法用Mono.Cecil重命名)

又如,有的时候(好像是随机的,尤其是程序集复杂一点)Reflector会把属性认为是get_XXX/set_XXX,事件认为是add_XXX/remove_XXX

然后还有匿名方法和Lambda表达式,Reflector有可能认为是含非法字符的命名方法(已经选择C#3.0/4.0优化了)

请问你是怎么处理的?

难道首先用Mono.Cecil修正标识符错误

然后在文本(例如正则表达式)的基础上,处理类似get_XXX,add_XXX和非法局部变量这样的问题?

感觉工作量很大啊

我的QQ是544125362,很想跟楼主求经(不敢称探讨)
雪    币: 358
活跃值: 活跃值 (73)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
wangshy 活跃值 2 2010-5-24 09:01
50
0
用Mono.Cecil来处理,工作量不大,没你想的这么复杂,整理好思路,用点耐心就行了
游客
登录 | 注册 方可回帖
返回