DundasWebChart 5.5 破解续.

1.Reflector.exe + ilDasm.exe + ilasm.exe 破解DundasWebChart(VS2005) 5.5 成功

上篇介绍的破解方法可以去除图片中的水印并且不稳定,但是无法去除falsh中的水印.
后来继续分析出了其破解方法,可以完全实现DundasWebChart的破解,方法如下:
1.分析Dundas.Charting.WebControl.ChartLicenseProvider中方法 iskeyvalid

protected virtual bool IsKeyValid(string key, Type type)
{
      
            
if (((textArray1.Length >= 2&& (textArray1[1== Chart.b)) && (textArray1[1== this.a()))
            
{
  
//将返回的false 改为 true
                  return false;
            }

      }

      
return true;
}


2.取消绘画的水印.

Dundas.Charting.WebControl.ChartPicture 中方法

public void Paint(Graphics graph, bool paintTopLevelElementOnly, RenderingType renderingType, XmlTextWriter svgTextWriter, Stream flashStream, string documentTitle, bool resizable, bool preserveAspectRatio)
{
 
     
this.OnAfterPaint(new ChartPaintEventArgs(this.a, this.a, new ElementPosition(0f, 0f, 100f, 100f)));
            
foreach (ChartArea area9 in this.a)
            
{
                  
if (area9.Visible)
                  
{
                        area9.a();
                        area9.d();
                  }

            }

     
//由于为真,会每次都会重画水印,设置为false 即可. 将this.e=true;改为 graph.e=false;
            this.e = true;
            
if (graph.e)
            
{
                  StringFormat format1 
= new StringFormat();
                  format1.Alignment 
= StringAlignment.Near;
                  format1.LineAlignment 
= StringAlignment.Near;
                  SolidBrush brush1 
= new SolidBrush(Color.FromArgb(40110xaf));
                  SolidBrush brush2 
= new SolidBrush(Color.FromArgb(40200200200));
                  Font font1 
= new Font(ChartPicture.a(), 8f);
                  SizeF ef3 
= this.a.GetRelativeSize(new SizeF(2f, 2f));
  .
}


利用 ildasm  反编辑程序集.
1.修改 IsKeyValid 的返回值

 

 .method family hidebysig newslot virtual 
          instance 
bool  IsKeyValid(string key,
                                    
class [mscorlib]System.Type 'type') cil managed
  
{
    .

    IL_0091:  ldc.i4.
1
    IL_0092:  ret

    IL_0093:  ldc.i4.
0   //将其修改为 ldc.i4.1
    IL_0094:  ret

    IL_0095:  ldc.i4.
0   //将其修改为 ldc.i4.1
    IL_0096:  ret
  }
 


2.修改Paint 方法.
找到方法位置如下:

 IL_0aff:  ldarg.0
      IL_0b00:  ldc.i4.
1
      IL_0b01:  stfld      
bool Dundas.Charting.WebControl.ChartPicture::e
      IL_0b06:  ldarg.
0
      IL_0b07:  ldfld      
bool Dundas.Charting.WebControl.ChartPicture::e
      IL_0b0c:  brfalse    IL_0bfb

      IL_0b11:  newobj     instance 
void [System.Drawing]System.Drawing.StringFormat::.ctor()
      IL_0b16:  stloc.s    V_24
      IL_0b18:  ldloc.s    V_24
      IL_0b1a:  ldc.i4.
1
      IL_0b1b:  callvirt   instance 
void [System.Drawing]System.Drawing.StringFormat::set_Alignment(valuetype [System.Drawing]System.Drawing.StringAlignment)
      IL_0b20:  ldloc.s    V_24
      IL_0b22:  ldc.i4.
1
      IL_0b23:  callvirt   instance 
void [System.Drawing]System.Drawing.StringFormat::set_LineAlignment(valuetype [System.Drawing]System.Drawing.StringAlignment)
      IL_0b28:  ldc.i4.s   
40
      IL_0b2a:  ldc.i4.
0
      IL_0b2b:  ldc.i4.
0
      IL_0b2c:  ldc.i4     
0xaf
      IL_0b31:  call       valuetype [System.Drawing]System.Drawing.Color [System.Drawing]System.Drawing.Color::FromArgb(int32,
                


     将以上代码修改为下面的il 代码.

 

IL_0aff:  ldarg.1
      IL_0b00:  ldc.i4.
0
      IL_0b01:  stfld      
bool Dundas.Charting.WebControl.ChartPicture::e
      IL_0b06:  ldarg.
1
      IL_0b07:  ldfld      
bool Dundas.Charting.WebControl.ChartPicture::e
      IL_0b0c:  brfalse    IL_0bfb
      
      IL_0b11:  newobj     instance 
void [System.Drawing]System.Drawing.StringFormat::.ctor()
      IL_0b16:  stloc.s    V_24
      IL_0b18:  ldloc.s    V_24
      
//破解方法在此 
      IL_0b1a:  ldc.i4.0
      IL_0b1b:  callvirt   instance 
void [System.Drawing]System.Drawing.StringFormat::set_Alignment(valuetype [System.Drawing]System.Drawing.StringAlignment)
      IL_0b20:  ldloc.s    V_24
      IL_0b22:  ldc.i4.
0
      IL_0b23:  callvirt   instance 
void [System.Drawing]System.Drawing.StringFormat::set_LineAlignment(valuetype [System.Drawing]System.Drawing.StringAlignment)
      IL_0b28:  ldc.i4.s   
40
      IL_0b2a:  ldc.i4.
1
      IL_0b2b:  ldc.i4.
1
      IL_0b2c:  ldc.i4     
0xaf
      IL_0b31:  call       valuetype [System.Drawing]System.Drawing.Color [System.Drawing]System.Drawing.Color::FromArgb(int32,
                  

         重新进行编译 ilasm /dll /RESOURCE=DundasWebChart.res DundasWebChart.il 
 OK,大功告成
/Files/wangzhq/DundasWebChart2006-11-15.rar

posted @ 2006-11-09 15:20  simplay  阅读(4063)  评论(20编辑  收藏  举报