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脚本编写逻辑的手游也是越来越多,如梦幻西游.刀塔传奇.开心消消乐.游龙英雄.奇迹 ...
随机推荐
- 如果你想真正了解Struts2,不妨可以进来看看
首先我们就一起来认识认识Struts2到底是什么?作为框架,它又是用来处理哪些问题的呢?正所谓脚踏实地走,即时离梦想会远一点,但却很真实,那我们就一步一步的来了解Struts2吧! 一.既然 ...
- 在windows上如何安装python web引擎jinja2
首先要把你的Python文件夹加到环境变量里头去.假设你的Python文件夹位于C:\Python34,那么你需要打开CMD并输入: SETX PATH "%path%;C:\Python3 ...
- Principles of measurement of sound intensity
Introduction In accordance with the definition of instantaneous sound intensity as the product of th ...
- IIS 8:IIS 入门
深埋在您的 Microsoft 服务器 (2008年. 2008 R2 和 2012年的版本) 的范围内是最强大的 Web 服务器可用. 它只等待你来发挥其全部潜力. 您的目标是要从家里运行一个 Wo ...
- .NET面试题系列[12] - C# 3.0 LINQ的准备工作
"为了使LINQ能够正常工作,代码必须简化到它要求的程度." - Jon Skeet 为了提高园子中诸位兄弟的英语水平,我将重要的术语后面配备了对应的英文. .NET面试题系列目录 ...
- WebApiThrottle限流框架使用手册
阅读目录: 介绍 基于IP全局限流 基于IP的端点限流 基于IP和客户端key的端点限流 IP和客户端key的白名单 IP和客户端key自定义限制频率 端点自定义限制频率 关于被拒请求的计数器 在we ...
- [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图
[.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图 1.用例图简介 定义:用例图主要用来描述“用户.需求.系统功能单元”之间的关系. ...
- 迷你MVVM框架avalon在兼容旧式IE做的努力
很多时候,写代码就像砌砖头,只要我们不关心盖楼的原因.建筑的原理.土木工程基础和工程经验,就算我们砌了100栋高楼,我们也就只是一个砌砖工人,永远也成为不了一个工程师,更别说建筑师了.而那些包工头也只 ...
- [nRF51822] 9、基础实验代码解析大全 · 实验12 - ADC
一.本实验ADC 配置 分辨率:10 位. 输入通道:5,即使用输入通道AIN5 检测电位器的电压. ADC 基准电压:1.2V. 二.NRF51822 ADC 管脚分布 NRF51822 的ADC ...
- 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述
微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...