FusionChart 水印破解方法(代码版)
网上一直找不到有关去除水印的方法!
正好做项目要用到这个鬼东西,折腾了一天,总算破解成功,把方法告诉大家。
先看下破解前的效果。
这是个很烦人的东西,而且有一个更加让人烦人的地方, 就是根本无法买!为什么,因为FusionChart官方已经停止下载了!就是说
你想买都买不到了,这可怎么办呢?没关系,我叫你手把手破解哦 = =。
为了成为一个好心人,今天我免费把我的FusionChart的完整版共享给大家,希望有用的人以后可以用到哦。
->下载地址 提取码:8tb9
我分享给大家的FusionChart不仅仅只有js和swf文件,更有asp.net工程等,PHP等,我网上看到过很多包,不过都没我这个齐全哦。
好吧,废话不多,开始破解,我们破解的话需要一些工具哦。
我们先要明白,是swf文件的问题,所以我们需要下载SWF反编译工具,
我推荐一个免费的,网上的大部分工具都很黑,要钱。
我这个不仅是免费的,还是汉化版的。
推荐使用Flash Decompiler Trillix ,
-->下载地址 提取码:sfmm
好了,我们下载完成以后,打开那个有水印的FLASH文件。
我这里因为是曲线图,所以是Spline.swf
然后大家可以在右边窗口看到脚本这一项。
因为我已经找到这一句加水印的话了,所以就直接打开6。
如果是其他的文件这句话的地方可能不同,大家如果想用Ctrf+F去查找的话,这里不能进行多文件查找,所以比较麻烦,
查找的话,推荐使用闪客精灵,记住别买哦,这东西超贵的,给大家的只是演示,说明闪客精灵可以准确定位那一句话的具体文件的位置。
好吧,不废话。
下一步我们找到了这句话。
恩,找到了,不过我们才成功一半,我们需要把文件导出成fla格式的。
打开转换菜单,然后在右边的窗口选择SWF全部,至于要导出的FLASH版本,最好是越高越好,
我用的ADOBE Flash cs5,如果你安装了对应版本的Flash ,那么导出成功以后会自动打开FLASH。
这里我们先点击转换当前。
打开了FLASH。先暂时不管他。
我们先打开转换后的目录,里面有FLA文件盒as文件。
我们这里在FLASH里面把所有的as文件都打开,然后再把所有的文件的任意地方打一个空格,保存,记得所有文件都要保存哦,这一步是最重要的
如果做得不完整的话,就会造成图表缺失或者是打不开,因为后面的导出影片会编译这些文件。
如上图,打开所有文件。
然后我们找到底下的Chart.as文件
依然是Ctrl+F查找Evaluation可以直接定位到那句话,去掉那句话和超链接OK。
然后返回FLA文件,导出影片。
替换到以前的就OK了,大功告成!
晚上了再个大家发一个福利。大家知道FusionChart是以键值对的形式添加的就是
<set lable='xxxx' value='xxx'>
大家有没有注意到,我上面的Label也是数字呢?哈哈,这个数字是不是间距应该不同呢?但是为什么一样呢?
因为FusionChart不提供2种数字的比例图,这就要我们自己去修改API,其实也不是很高深哦,我先放一张效果图。
看到了没,间距不一样哦~~
这个怎么实现的呢?
首先我们需要找到他添加X轴坐标的地方,这个地方其实很难找,但是我已经找到了,直接告诉大家把。
大家反编译出来的FLA文件附带了很多AS文件,在com\fusioncharts\core\chartsSpline2DChart.as里面,打开这个文件
定位到850行左右,如下图,可以看到X轴和Y轴的设置方法。
我们把X轴注释掉(防止以后要用),然后自己写一个X轴,这里我们为了方便,就用Y轴的方法。
嘿嘿,其实FC留了一个后门的,其实直接用这个GetAxisPositon方法就OK。
我们来 看一下这个方法的样子。
这个方法在SingleYAxisChart.as里面。
function getAxisPosition(value, upperLimit, lowerLimit, startAxisPos, endAxisPos, isYAxis, xPadding)
{
var __reg3 = undefined;
var __reg2 = undefined;
var __reg1 = undefined;
var __reg4 = undefined;
__reg3 = upperLimit - lowerLimit;
if (isYAxis)
{
__reg2 = endAxisPos - startAxisPos;
__reg1 = __reg2 / __reg3 * (value - lowerLimit);
__reg4 = endAxisPos - __reg1;
}
else
{
__reg2 = endAxisPos - startAxisPos - 2 * xPadding;
__reg1 = __reg2 / __reg3 * (value - lowerLimit);
__reg4 = startAxisPos + xPadding + __reg1;
}
return __reg4;
}
SingleYAxisChart.as
注意里面有一个if (isYAxis) 哈哈,这个就是说,如果是Y轴,那么我们肯定不是Y轴。所以这个参数要写FALSE。
下面我们回到正题,把这个方法写出来
while (__reg2 <= this.num)
{
// this.data[__reg2].x = this.num == 1 ? this.elements.canvas.x + this.elements.canvas.w / 2 : this.elements.canvas.x + this.params.canvasPadding + __reg20 * (__reg2 - 1);
this.data[__reg2].x = this.getAxisPosition(this.data[__reg2].label, this.getMaxDataValueX(), this.getMinDataValueX(), this.elements.canvas.x, this.elements.canvas.toX, false, 0);
this.data[__reg2].y = this.getAxisPosition(this.data[__reg2].value, this.config.yMax, this.config.yMin, this.elements.canvas.y, this.elements.canvas.toY, true, 0);
this.data[__reg2].valTBY = this.data[__reg2].y;
++__reg2;
}
需要改动的地方
getAxisPosition里面的参数功能是这些
function getAxisPosition(value, upperLimit, lowerLimit, startAxisPos, endAxisPos, isYAxis, xPadding)
value:判断是label或者value
upperLimit:上限,放到X轴即最右边的极限
lowerLimit:最小值
startAxisPos:开始的坐标位置,这里直接把对应的Y改成X。
endAxisPos:结束的坐标位置,同上
isYAxis:是否是Y轴
xPadding:X轴PADDING,顾名思义啦。
这里我还创建了2个方法。一个是得到X轴最大值,一个是得到Y轴最大值,这里也可以写死,不过推荐大家写活的。
方法如下:可以参考Y轴的方法,把value替换成label就OK了
//获得X轴的最大值
function getMaxDataValueX()
{
var __reg3 = undefined;
var __reg4 = false;
var __reg2 = undefined;
__reg2 = 1;
while (__reg2 <= this.num)
{
if (__reg4 == false)
{
if (this.data[__reg2].isDefined == true)
{
__reg4 = true;
__reg3 = this.data[__reg2].label;
}
}
else if (this.data[__reg2].isDefined)
{
__reg3 = this.data[__reg2].label > __reg3 ? this.data[__reg2].label : __reg3;
}
++__reg2;
}
return __reg3;
} //获得X轴的最小值
function getMinDataValueX()
{
var __reg3 = undefined;
var __reg4 = false;
var __reg2 = undefined;
__reg2 = 1;
while (__reg2 <= this.num)
{
if (__reg4 == false)
{
if (this.data[__reg2].isDefined == true)
{
__reg4 = true;
__reg3 = this.data[__reg2].label;
}
}
else if (this.data[__reg2].isDefined)
{
__reg3 = this.data[__reg2].label < __reg3 ? this.data[__reg2].label : __reg3;
}
++__reg2;
}
return __reg3;
}
得到最大值最小值(X轴)
最后,晚安各位。
FusionChart 水印破解方法(代码版)的更多相关文章
- Photoshop Cs5 64位系统破解版下载(内含破解方法)
Photoshop Cs5 64位系统是电影.视频和多媒体领域的专业人士, 使用 3D 和动画的图形和 Web 设计人员, 以及工程和科学领域的专业人士的理想选择,下面提供Photoshop Cs5 ...
- VC2010的破解方法(针对旗舰版)
VS2010 正式版破解方法详解 全球开发者最为瞩目的Visual Studio 2010开发工具在4月12日正式发布,现为大家制作一个简单的破解教程有两种方法,操作不一样,原都一样(针对旗舰版,其他 ...
- 进程优化工具Process Lasso Pro 8.4官方版+激活破解方法
Process Lasso是一款来自美国的系统进程优化工具,基于特殊算法动态调整进程的优先级别,通过合理的设置进程优先级来实现降低系统负担的功能.可有效避免蓝 屏.假死.进程停止响应.进程占用 CPU ...
- DbVisualizer9.0.6破解版下载、破解方法以及补丁
DbVisualizer破解方法如下:第一步:把下载的dbvis.puk文件,替换掉安装目录“D:\Program Files\DbVisualizer-6.0.12\lib”下dbvis.jar里面 ...
- IntelliJ IDEA 破解方法
2017版破解方法: 1. 到网站http://idea.lanyus.com/,按要求修改电脑HOST,获取注册码: 使用前请将“0.0.0.0 account.jetbrains.com”添加到h ...
- PHPstorm破解方法及xdebug的断点调试
原文地址:http://www.php.cn/php-weizijiaocheng-381903.html 相信用PHPstorm的程序员肯定很多,令人头疼的是下载的PHPstorm是有使用期限的,小 ...
- IntelliJ IDEA 2017 完美注册方法及破解方法
本文使用破解方式注册. 下载破解文件JetbrainsCrack-2.6.2.jar 下载地址: http://idea.lanyus.com/ 开始破解 一.将下载的 JetbrainsCrack- ...
- 最简破解-java代码热加载热部署IDEA插件JRebel
如果经济实力允许的话,还是建议大家去购买收费版.支持原创作者,才能有更好的产品出现. 一.Jrebel插件介绍 JRebel一款帮助我们在开发过程中实现热加载的插件,目前来说,在IDEA中实现热加载最 ...
- Lua游戏逆向及破解方法介绍
Lua游戏逆向及破解方法介绍 背景介绍 随着手游的发展,越来越多的Cocos-lua端游开发者转移到手游平台.Lua脚本编写逻辑的手游也是越来越多,如梦幻西游.刀塔传奇.开心消消乐.游龙英雄.奇迹 ...
随机推荐
- Mac git提交步骤小记
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 19.0px; font: 13.0px "PingFang SC"; c ...
- centos 7.2 安装PHP7.1+apache2.4.23
安装准备: http://ftp.cuhk.edu.hk/pub/packages/apache.org//httpd/httpd-2.4.23.tar.gz 下载apache http://cn ...
- 关于PHP中<?php ?>的结束标签是否添加
在纯PHP代码中“?>”结束标签最好不要添加 原因:容易导致输出多余的空白或者换行,以及由此产生的一些报错. 比如a.php文件中,在?>标签后面多出空格或者换行,而当b.php文件引入a ...
- VS上关于找不到程序集的问题
第一次重新装了次vs再次导入以前写的项目发现找不到程序集,出现很多的警告和错误,并且代码里好多都是显示红色的 第二次乱动了下又出现此问题 记录下解决的方案和一些相关的问题方案 1.引用一个DLL,需要 ...
- 关于IoCallDriver使用的疑惑
#pragma PAGEDCODE NTSTATUS HelloDDKRead(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp) { KdPrint(("Dr ...
- shared_ptr
省去对象指针的显示delete typedef tr1::shared_ptr<int> IntPtr; IntPtr fun() { IntPtr p = new int(3); ret ...
- Tomcat 中响应头信息(Http Response Header) Content-Length 和 Transfer-Encoding
户端(PC浏览器或者手机浏览器)在接受到Tomcat的响应的时候,头信息通常都会带上Content-Length ,一般情况下客户端会在接受完Content-Length长度的数据之后才会开始解析.而 ...
- #IrrlichtEngine# Example1 HelloWorld
配置IDE环境来使用irrlicht引擎: (VS2012下)菜单栏项目 -> 项目属性窗口下 C/C++ -> 常规 -> 附加包含目录中添加irrlicnt引擎文件目录下incl ...
- 使用 MimeKit 和 MailKit 发送邮件
MimeKit 给.NET 社区带来了一流的 MIME 解析器,它能处理复杂的各种Mime, 性能好.而且开箱即用支持 S/MIME 和 PGP.MimeKit 和 MailKit 支持最新的国际化的 ...
- Scala 笔记
环境 1. Intellij Idea 2. Scala 插件 3. http://scala-lang.org/ 教程: idea官方教程: https://www.jetbrains.com/he ...