最近公司开发项目使用到了amchart控件,所以自己研究了下,发现在这个控件生成的图片以及曲线还是比较漂亮的,而且样式也比较多。废话不多说了http://www.amcharts.com/(立陶宛的公司)这是amchart的官方网站,登陆上去很清楚的就能发现支持flash charts flex charts WPF/Sliverlight charts 这几种不同的应用,每种不同版本中又分为不同的曲线比如stock类型的、column&bar类型的。。。。可以自己看下,在Asp.net程序中,官方还提供了Asp.net控件版本的控件,在项目中引用控件后就可以直接使用,下面是一段实例代码
: public void BindData()
{
//手动生成一个DataTable
DataSet ds = new DataSet("column");
DataTable dt = new DataTable("columnTable");
DataColumn dc_y = new DataColumn("year");
DataColumn dc_v = new DataColumn("val");
DataColumn dc_v1 = new DataColumn("val1");
dt.Columns.Add(dc_y);
dt.Columns.Add(dc_v);
dt.Columns.Add(dc_v1);
Random rd = new Random();
for (int i = 2000; i
You need to upgrade your Flash Player
//
flash chart 使用的是csv格式的数据,将要展示的数据写入到csv文件中,之后根据配置文件.xml生成曲线
至于配置配置文件可以使用http://extra.amcharts.com/editor/stock/官方提供的,可以很容易生成配置文件,其中配置文件中
1C
***.csv
events.xml
true
,
.
date
data_sets是用来配置曲线对应的数据文件的 ***.csv指示的对应的数据文件的名称指示了csv中要展示的那些数据 events.xml指的是触发事件的.xml文件的名称,使用的时候可以将要展示的数据写入csv文件(重新创建),之后将配置文件中的***.csv动态替换掉,之后在页面的so.addVariable("settings_file", encodeURIComponent(""));中引用配置文件就可以。上面介绍的是amstock曲线的使用方法,别的曲线大同小异!
amchart的破解
amChart的Chart破解到比较好找,自己也看了一下
用Sothink SWF Decompiler破解swf文件,能看到加载注册信息的算法
function checkKey(serial)
{
serial = com.amcharts.column.Utils.stripSymbols(serial, " ");
serial = com.amcharts.column.Utils.stripSymbols(serial, "\n");
serial = com.amcharts.column.Utils.stripSymbols(serial, "\r");
serial = com.amcharts.column.Utils.stripSymbols(serial, "\r\n");
arr = serial.split("-");
if (Number(arr[2]) + Number(arr[3]) != 8645 || Number(arr[2].substr(1, 1)) - Number(arr[3].substr(2, 1)) != 2)
{
attachMovie("copyright_mc", "copyright_mc", 1001);
} // end if
} // End of the function
结果很简单,在注册文件里面填一个满足条件的注册号即可
例如:-cracked-1422-7223-cracked-
把文件保存成amcharts_key.txt即可
================================================== =====
amChart .net Control的破解就没找到了
于是用Lutz Reader's .net reflector,反编译了控件,找到加密算法
private bool CheckKey(string keyString)
{
try
{
string[] parts = keyString.Split(new char[] { '-' });
if (parts.Length != 6)
{
return false;
}
if (parts[0].ToUpper() != "AMCHART")
{
return false;
}
if (parts[1].ToUpper() != "NETL")
{
return false;
}
int n1 = int.Parse(parts[3]);
int n2 = int.Parse(parts[4]);
int n3 = int.Parse(parts[5]);
return (Math.Abs((int) ((((n1 *
- (n2 * 7)) + 0x4d2) % 0x2710)) == n3);
}
catch
{
return false;
}
}
然后找一个满足条件的注册号也不难了,
例如:AMCHART-NETL-Cracked-10-10-1244
最后写入在web.config里面即可================================================== ==
以上是在网上找到的破解方法。
但是,我按照第二种方法破解,发现还是会显示未破解的链接,
于是,自己也去用reflector,反编译了一下控件。
发现如下代码:
if (!string.IsNullOrEmpty(ConfigurationManager.AppSet tings["amcharts_net_key"]))
{
this.CheckKey(ConfigurationManager.AppSettings["am charts_net_key"]);
}
if (File.Exists(Path.Combine(HttpContext.Current.Serv er.MapPath("~/Bin"), "amcharts_net_key.txt")))
{
this.CheckKeyFile(Path.Combine(HttpContext.Current .Server.MapPath("~/Bin"), "amcharts_net_key.txt"));
}
if (File.Exists(Path.Combine(HttpContext.Current.Serv er.MapPath("~/App_Data"), "amcharts_net_key.txt")))
{
this.CheckKeyFile(Path.Combine(HttpContext.Current .Server.MapPath("~/App_Data"), "amcharts_net_key.txt"));
}
private bool CheckKey(string keyString)
{
try
{
string[] parts = keyString.Split(new char[] { '-' });
if (parts.Length != 6)
{
return false;
}
if (parts[0].ToUpper() != "AMCHART")
{
return false;
}
if (parts[1].ToUpper() != "NETL")
{
return false;
}
int n1 = int.Parse(parts[3]);
int n2 = int.Parse(parts[4]);
int n3 = int.Parse(parts[5]);
return (Math.Abs((int)((((n1 *
- (n2 * 7)) + 0x4d2) % 0x2710)) == n3);
}
catch
{
return false;
}
}
private bool CheckKeyFile(string keyPath)
{
try
{
return this.CheckKey(File.ReadAllText(keyPath).Trim());
}
catch
{
return false;
}
}
原来控件不可以校验web.config中的注册号
还可以校验bin和App_Data目录下的amcharts_net_key.txt文件。
另外,swf所在目录下还要执行第一种破解才算完美破解
amstock破解可以在这里下载到http://tianshikuqi8.download.csdn.net/