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脚本编写逻辑的手游也是越来越多,如梦幻西游.刀塔传奇.开心消消乐.游龙英雄.奇迹 ...
随机推荐
- 理解MVC,MVP和MVVM设计模式
有3个非常受欢迎的MV-*系列设计模式:MVC,MVP,MVVM.他们被广泛应用于不多种结束.这篇文章我回阐述我自己对这3个设计模式的看法. MVC模式: MVC即Model-VIew-Control ...
- 在手机网页上模拟 js 控制台
在手机上模拟 console 做一些简单代码调试 在工作机上编辑好代码用QQ 之类的工具传到 手机上在调试当然你也可以尝试用一只手指写代码的壮举设置 window.console = mobiDeb ...
- 设计一个用于人事管理的People(人员)类
#include <iostream> #include <string> using namespace std; class Date //日期类 { private: i ...
- for循环中的占位 pass
- Windows安装和使用zookeeper
之前整理过一篇文章<zookeeper 分布式锁服务>,本文介绍的 Zookeeper 是以 3.4.5 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apach ...
- 30分钟全面解析-SQL事务+隔离级别+阻塞+死锁
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- Java使用RSA加密解密及签名校验
该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar注意:RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (18) -----第三章 查询之结果集扁平化和多属性分组
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-14 结果集扁平化 问题 你有一对多关联的两个实体,你想通过一个查询,获取关联 ...
- Redis学习笔记~目录
回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...
- AJAX简介
基本介绍 AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML). 国内翻译常为“阿贾克斯”和阿贾克斯足球队同音.Web应用的交互如Fli ...