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脚本编写逻辑的手游也是越来越多,如梦幻西游.刀塔传奇.开心消消乐.游龙英雄.奇迹 ...
随机推荐
- tab22
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- markdown预览-快速入门
最近要写文档,领导指定用markdown. 这个两三年前用过两次的神器工具,都忘的差不多了. 为了熟练一点这个技能,决定好好的重新学一次. 于是乎:看快速入门文档 ...30分钟...看完文档发现要来 ...
- python将图片转换为Framebuffer裸数据格式(终端显示图片)
要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口,直接写入像素信息即可. 但普通的图片带有头部信息或者编码格式不同,直接送入Framebuffer是显 ...
- java学习之面向对象(3)
下面来谈谈java编程中的一些语法: 1.什么是对象数组? 对象数组就是数组里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋值给数组. 对象数组的声明: 类名[] 对象数组名称 = n ...
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- 用C#语言在Visual Studio 2010里开发一个自定义的PowerShell Cmdlet
1. 打开Visual Studio 2010 2. 新建一个基于Class Library的项目 3. 给项目起个名字然后OK 4. 为项目添加下列Reference System.Manageme ...
- 安卓调用百度地图api 错误 mcode参数不存在
自己的手机app里用到了百度地图sdk,希望根据手机获得的坐标来逆向到百度地图的坐标. 根据api文档拼写了url,因为是移动端,说是要添加mcode参数,然后我的url看起来如下: http://a ...
- .NET Framework 4.5.2 静默安装参数
Microsoft .NET Framework 4.5.2 是针对 Microsoft .NET Framework 4.Microsoft .NET Framework 4.5 和 Microso ...
- 开发便于运维的Windows服务
过去几个月,DevOps on Windows网站推出了一系列文章,详细讲解了开发者应怎样创建便于运维的Windows服务.这一系列文章详细分析了如何克服在运维部门看来最困难的部分:Windows服务 ...
- Docker实践:安装wordpress
本文将示例如何使用Docker来安装wordpress.使用三种方法: 1.基于官方的wordpress镜像使用docker run实现: 2.基于官方的wordpress镜像使用fig命令编排工具实 ...