张扬而不张狂、拼博而不拼命!
忙碌而不盲目、放松但不放纵!

随笔 - 39, 文章 - 31, 评论 - 179, 引用 - 7
数据加载中……

Dundas Win Chart 5.5.0的破解...

1.描述
项目中用到这个较好的的图表控件:Dundas Win Chart,如果未花几千$买正版的,用在项目中时会带有水印与license
出于学习.Net反编译的文件及IL语言的目的,现把破解方法记录如下

2.破解的版本
Dundas Win Chart 5.5.0.1696 vs2005-winform- enterprise

3.相关步骤

准备工作:

建立一个用于破解的目录,写两个bat文件

Dasm.bat (反编译的文件)
ildasm DundasWinChart.dll /out=DundasWinChart.il

Asm.bat(编译反编译出来的il代码文件,重新生成dll文件)
ilasm /dll /res:DundasWinChart.res /key:MyCompany.snk DundasWinChart.il /out:DundasWinChart.dll /quiet

由于此版本的DLL库进行了强命名,所以在反编译时需要自己生成一个MyCompany.snk的强命名文件,再次进行强命名
生成方法为在visual studio 2005 commond prompt下用sn工具直接生成即可

把需要破解的DundasWinChart.dll复制进此目录

正式开始:

打开vs2005命令行,进入刚才建立的目录,运行ildasm;
此时会把当前目录中的DundasWinChart.dll反编译,反编译出相关的IL文件及资源文件
用NOTEPAD或其它工具打开DundasWinChart.il文件,同时用reflector打开DLL文件
打开Dundas.Charting.WinControl.ChartPicture的 Paint方法
public void Paint(Graphics graph, bool paintTopLevelElementOnly)
{
    this.Paint(graph, paintTopLevelElementOnly, RenderingType.Gdi, null, null, string.Empty, false, false);
}
public void Paint(Graphics graph, bool paintTopLevelElementOnly, RenderingType renderingType, XmlTextWriter svgTextWriter, Stream flashStream, string documentTitle, bool resizable, bool preserveAspectRatio)
{
    this.b = false;
    this.a.a(this.a, null);
*****************
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            this.OnAfterPaint(new ChartPaintEventArgs(this.a, this.a, new ElementPosition(0f, 0f, 100f, 100f)));
            foreach (ChartArea area7 in this.a)
            {
                if (area7.Visible)
                {
                    area7.a();
                    area7.d();
                }
            }
            this.d = true; --就是这里了
            if (this.d)
            {
                StringFormat format = new StringFormat();
                format.Alignment = StringAlignment.Center;
                format.LineAlignment = StringAlignment.Center;
                SolidBrush brush = new SolidBrush(Color.FromArgb(40, 0, 0, 0xaf));
                SolidBrush brush2 = new SolidBrush(Color.FromArgb(40, 200, 200, 200));
                Font font = new Font(a(), 8f);
                SizeF relativeSize = this.a.GetRelativeSize(new SizeF(2f, 2f));
                string text = ct.a("\u14ad\u14de\u14d7\u14cd\u14ca\u14dc\u1489\u14ac\u14d1\u14ca\u14db\u14dd\u1489\u1496\u1489\u14c0\u14d2\u14d7\u14cd\u14d8\u14e0\u14dc\u1489\u14af\u14d8\u14db\u14d6\u14dc\u1489\u14ae\u14d7\u14dd\u14ce\u14db\u14d9\u14db\u14d2\u14dc\u14ce\u1489\u14ae\u14cd\u14d2\u14dd\u14d2\u14d8\u14d7\u1476\u1473\u14ae\u14df\u14ca\u14d5\u14de\u14ca\u14dd\u14d2\u14d8\u14d7\u1489\u14b6\u14d8\u14cd\u14ce\u1489\u14ae\u14d7\u14ca\u14cb\u14d5\u14ce\u14cd\u1495\u1489\u14cf\u14d8\u14db\u1489\u14dd\u14ce\u14dc\u14dd\u14d2\u14d7\u14d0\u1489\u14d9\u14de\u14db\u14d9\u14d8\u14dc\u14ce\u14dc\u1489\u14d8\u14d7\u14d5\u14e2\u1476\u1473\u1491\u14ac\u1492\u1489\u149b\u1499\u1499\u149f\u1489\u14ad\u14de\u14d7\u14cd\u14ca\u14dc\u1489\u14bc\u14d8\u14cf\u14dd\u14e0\u14ca\u14db\u14ce\u1495\u1489\u14e0\u14e0\u14e0\u1497\u14cd\u14de\u14d7\u14cd\u14ca\u14dc\u1497\u14cc\u14d8\u14d6");
                this.a.a(text, font, brush2, new RectangleF(0f, 0f, 100f, 100f), format);
                this.a.a(text, font, brush, new RectangleF(0f, 0f, 100f - relativeSize.Width, 100f - relativeSize.Height), format);
            }
            if (renderingType == RenderingType.Svg)
            {
                this.a.Close();
                this.a.a(RenderingType.Gdi);
            }
        }
    }
}

把上面的this.d = true;改为false就得了

打开DundasWinChart.il文件,用end of method ChartPicture::Paint搜索,总计应该找到两处,就是第二处了,那个method代码比较多那个

看到如下IL代码:
      IL_0950:  ldarg.0
      IL_0951:  ldc.i4.1 就是这个,意思是true,改为false即可
      IL_0952:  stfld      bool Dundas.Charting.WinControl.ChartPicture::d
      IL_0957:  ldarg.0
      IL_0958:  ldfld      bool Dundas.Charting.WinControl.ChartPicture::d
      IL_095d:  brfalse    IL_0a4c

把IL_0951:  ldc.i4.1中的ldc.i4.1改为ldc.i4.0
改完之后,意思就是去除水印了

还有一个问题就是去除license

打开Dundas.Charting.WinControl.ChartImage的a(string,string)这个方法,看清楚是有两个字符型参数的这个a方法

private static bool a(string text1, string text2)
{
    bool flag = false;  把它改为true就行了
    RegistryKey key = Registry.LocalMachine.OpenSubKey(text1);
    if (key != null)
    {
        string text = (string) key.GetValue(ct.a("\u14b2\u14d7\u14dc\u14dd\u14ca\u14d5\u14d5\u14ad\u14d2\u14db"));
        if (!text.EndsWith(ct.a("\u14c5")))
        {
            text = text + ct.a("\u14c5");
        }
        if (File.Exists(text + ct.a("\u14ab\u14d2\u14d7\u14c5") + text2))
        {
            flag = true;
        }
    }
    return flag;
}

打开DundasWinChart.il文件,用end of method ChartImage::a搜索,打开那个有两个字符型参数a(string,string)的a方法
    IL_0000:  ldc.i4.1
    IL_0001:  stloc.0
    IL_0002:  ldsfld     class [mscorlib]Microsoft.Win32.RegistryKey [mscorlib]Microsoft.Win32.Registry::LocalMachine
    IL_0007:  ldarg.0
    IL_0008:  callvirt   instance class [mscorlib]Microsoft.Win32.RegistryKey [mscorlib]Microsoft.Win32.RegistryKey::OpenSubKey(string)
    IL_000d:  stloc.1
    IL_000e:  ldloc.1
    IL_000f:  brfalse.s  IL_006b
把其中IL_0000:  ldc.i4.1的ldc.i4.1改为ldc.i4.0就OK了

别着急,如果现在就进行asm,可能会错
 Error: Reference to undefined class 'UNKNOWN_OWNER'
Could not create output file, error code=0x80004005
这是因为本版本应该是进行了混淆,所以出错,
把DundasWinChart.il文件中最下面的UNKNOWN_OWNER项全部删除

在vs2005中asm,编译出新的DundasWinChart.DLL文件,再次加入测试DEMO程序,看看是否还有水印存在!!!

如果在此之前你已经用过未破解的版本,可能你的项目在会存在license文件,把其删除即可(在Properties下的license.licx)

OK,破解完成!
请使用正版软件,此版本仅供学习使用!

4.破解后的DLL文件
DundasWinChart.dll

5.参考资料
http://jetboy.blog.hexun.com/7538516_d.html
http://www.agilelabs.cn/blogs/woody/archive/2007/02/06/1907.aspx
http://smartstone.cnblogs.com/archive/2006/06/08/420862.html

posted on 2007-03-15 09:52 林子 阅读(6442) 评论(26)  编辑 收藏 网摘 所属分类: DOTNET技术

评论

#1楼   回复  引用  查看    

怎么看的人多没一个回的?难道因为这篇随笔是灰色的?呵呵
2007-03-16 10:43 | reonlyrun      

#2楼   回复  引用    

顶一下,很好!不过我不会用的,谨慎使用第三方控件
2007-03-16 12:06 | 路人[未注册用户]

#3楼   回复  引用  查看    

中国人,支持!
2007-03-16 13:14 | 网魂小兵      

#4楼[楼主]   回复  引用  查看    

@路人

可以到官方下一个,这个东东的DEMO非常好,看看就会了!
2007-03-16 13:47 | 林子      

#5楼   回复  引用  查看    

谢谢,我觉得我们应该写一个自己的图表控件。
2007-03-16 16:21 | 巫云      

#6楼   回复  引用    

。net的目标就是让玩。net的人都会破解,到这一步并不难!
..........................................................
..............___.............________________.
.............| # |.../R\.....|■■■■■■■■■■■■■■■|.
.............| # |...\_/.....|■鼓励原创破解!...■|.
.............| # |............|■.....................■|.
.............| # |............|■..楼主是...........■|.
....|##|..| # |...|##|..|■.....好人!...。...■|.
....|##|..| # |...|##|..|■..鉴定完毕。.......■|.
.............| # |............|■■■■■■■■■■■■■■■|.
............/#...#\..........|__2007-03-16____|.
.........../#/...\#\..........火星人鉴定委员会.....
........../#/.....\#\...................................
........./#/.......\#\..................................
......../#/.........\#\.................................
......./_/...........\_\.................................
...........................................................
2007-03-17 16:04 | wsx[未注册用户]

#7楼   回复  引用    

楼主太强了!
2007-03-17 17:47 | jj[匿名][未注册用户]

#8楼[楼主]   回复  引用  查看    

@thxis0

这个不是chart componet C# asp.net
是chart componet C# Winform的
2007-03-21 20:55 | 林子      

#9楼   回复  引用    

强烈支持国产破解事业
2007-03-22 13:42 | landou[未注册用户]

#10楼   回复  引用    

使用了楼主的破解dll,在vs2005不能从工具栏托到form中呢?难道没有破解完全?还是我使用方法错误?
2007-04-09 20:42 | yanak[未注册用户]

#11楼[楼主]   回复  引用  查看    

@yanak

不可能,上面的DLL已经在vs2005下测试通过!
你再检查你的使用方法!
2007-04-10 11:01 | 林子      

#12楼   回复  引用    

请问现在哪里还有5.5.0版本下载?
现在官方网站上的已经是5.5.1版本了。可能提供的这个dll不能用
2007-04-16 13:12 | lcxie[未注册用户]

#13楼   回复  引用  查看    

下载完成真的是好东西啊,改天试用
2007-04-23 11:07 | WideWeide      

#14楼   回复  引用    

请教高手,有面向VC.NET2003的破解版吗?在下急需,能不能给发一个呢xuehezi1@126.COM
2007-05-07 16:53 | XUEHEZI[未注册用户]

#15楼   回复  引用    

兄弟,有空能帮忙破解个WebForm 版本的吗? 也是v5.5 企业版的哦
2007-05-26 16:27 | Dicky[未注册用户]

#16楼   回复  引用    

@巫云
要写的很完美很困难呀!
2007-05-29 11:51 | CUCEEYAR[未注册用户]

#17楼   回复  引用    

不要留Email等了,到这个站下,我用过了,破解更新很及时的

http://blog.csdn.net/allisnew

DotNetBar, dotnetCharting, Dundas Chart/Gauge/Map企业版, FlyTreeView, DevExpress (DXperience) 中文本地化, Telerik RadControls 2007Q1 sp1, FarPoint Spread, IP*Works!……

#18楼   回复  引用    

在vs2005下根本无法使用,强名验证失败!
2007-06-27 11:06 | yqh2648[未注册用户]

#19楼   回复  引用    

在vs2005下根本无法使用,强名验证失败!
2007-07-06 15:47 | 何广朋[未注册用户]

#20楼   回复  引用  查看    

2007-09-05 16:11 | 邓林海      

#21楼   回复  引用    

顶。。。。我是个新手不知道有个dll怎么用啊!~~~~
现在项目中有这样的需求,能不能请教下


2007-12-28 13:21 | MarsLove[未注册用户]

#22楼   回复  引用    

不错, 看了好几篇破解的文章, 就这篇帮助我完全破解成功, 因为我破解的是V6.1版For Asp.net, 所以完成后在vs2005不能从工具栏托到网页中, 最后才知道, 修改如下, 找文件头部找到类似如下的代码, 注释掉publicKey值即可
.assembly DundasWebChart //楼上的应该是DundasWinChart
{
// .publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 // .$..............
// 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 // .$..RSA1........
// 43 D9 8F 8A 90 67 EF 3B CD 44 2A DE 2D D4 8C C6 // C....g.;.D*.-...
// A6 FA CB CE B1 C4 2D E2 84 7B 0A 46 40 96 C0 2E // ......-..{.F@...
// EB F6 FD 87 E3 88 9B EE D3 2B 9A BD 15 25 A1 1A // .........+...%..
// 28 22 32 CD 4C 46 CC 81 23 F8 CC 08 A1 13 CD 43 // ("2.LF..#......C
// 54 29 64 62 20 96 9F F4 44 73 48 D1 C2 18 74 67 // T)db ...DsH...tg
// 08 34 C7 A7 E8 9E A8 95 6F C0 0E 0F 84 FD 3D F6 // .4......o.....=.
// FB 3E BF 21 77 44 38 AF 9E 76 04 14 FD E0 6B C2 // .>.!wD8..v....k.
// C3 AF 35 FF 3D D8 75 78 63 0E D1 3F E1 2C BD BC ) // ..5.=.uxc..?.,..
// .hash algorithm 0x00008004
.ver 6:1:0:1726
}
2008-03-17 18:12 | Tomzzu[未注册用户]

#23楼   回复  引用    

真是太不错,我自己也试着破解了个:
http://topic.csdn.net/u/20080916/11/5d0069c6-da5d-40ca-bdc8-2e456711ee00.html
2008-09-16 19:10 | cyco008[未注册用户]

#24楼   回复  引用  查看    

帅啊!
2008-09-16 19:59 | Justin      



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 675443




相关文章:

相关链接: